Math.IEEERemainder Method (Double, Double)
Returns the remainder resulting from the division of a specified number by another specified number.
Assembly: mscorlib (in mscorlib.dll)
Return Value
Type: System.DoubleA number equal to x - (y Q), where Q is the quotient of x / y rounded to the nearest integer (if x / y falls halfway between two integers, the even integer is returned).
If x - (y Q) is zero, the value +0 is returned if x is positive, or -0 if x is negative.
If y = 0, NaN is returned.
This operation complies with the remainder operation defined in Section 5.1 of ANSI/IEEE Std 754-1985; IEEE Standard for Binary Floating-Point Arithmetic; Institute of Electrical and Electronics Engineers, Inc; 1985.
TheIEEERemainder method is not the same as the modulus operator. Although both return the remainder after division, the formulas they use are different. The formula for the IEEERemainder method is:
IEEERemainder = dividend - (divisor * Math.Round(dividend / divisor))
In contrast, the formula for the modulus operator is:
Modulus = (Math.Abs(dividend) - (Math.Abs(divisor) *
(Math.Floor(Math.Abs(dividend) / Math.Abs(divisor))))) *
Math.Sign(dividend)
The following example contrasts the remainder returned by the IEEERemainder method with the remainder returned by the modulus division operator.
using System; public class Example { public static void Main() { Console.WriteLine("{0,35} {1,20}", "IEEERemainder", "Modulus"); ShowRemainders(3, 2); ShowRemainders(4, 2); ShowRemainders(10, 3); ShowRemainders(11, 3); ShowRemainders(27, 4); ShowRemainders(28, 5); ShowRemainders(17.8, 4); ShowRemainders(17.8, 4.1); ShowRemainders(-16.3, 4.1); ShowRemainders(17.8, -4.1); ShowRemainders(-17.8, -4.1); } private static void ShowRemainders(double number1, double number2) { string formula = String.Format("{0} / {1} = ", number1, number2); Console.WriteLine("{0,-16} {1,18} {2,20}", formula, Math.IEEERemainder(number1, number2), number1 % number2); } } // The example displays the following output: // // IEEERemainder Modulus // 3 / 2 = -1 1 // 4 / 2 = 0 0 // 10 / 3 = 1 1 // 11 / 3 = -1 2 // 27 / 4 = -1 3 // 28 / 5 = -2 3 // 17.8 / 4 = 1.8 1.8 // 17.8 / 4.1 = 1.4 1.4 // -16.3 / 4.1 = 0.0999999999999979 -4 // 17.8 / -4.1 = 1.4 1.4 // -17.8 / -4.1 = -1.4 -1.4
Available since 8
.NET Framework
Available since 1.1
Portable Class Library
Supported in: portable .NET platforms
Silverlight
Available since 2.0
Windows Phone Silverlight
Available since 7.0
Windows Phone
Available since 8.1