Math.IEEERemainder(Double, Double) 方法

定义

返回一指定数字被另一指定数字相除的余数。

C#
public static double IEEERemainder(double x, double y);

参数

x
Double

被除数。

y
Double

除数。

返回

等于 x - (y Q) 的数,其中 Q 是 x / y 的商的最接近整数(如果 x / y 在两个整数中间,则返回偶数)。

如果 x - (y Q) 为零,则在 x 为正时返回值 +0,而在 x 为负时返回 -0。

如果 y = 0,则返回 NaN

示例

以下示例将 方法返回 IEEERemainder 的余数与余数运算符返回的 余数进行对比。

C#
using System;

public class Example
{
   public static void Main()
   {
      Console.WriteLine($"{"IEEERemainder",35} {"Remainder operator",20}");
      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)
   {
      var formula = $"{number1} / {number2} = ";
      var ieeeRemainder = Math.IEEERemainder(number1, number2);
      var remainder = number1 % number2;
      Console.WriteLine($"{formula,-16} {ieeeRemainder,18} {remainder,20}");
   }
}
// The example displays the following output:
//
//
//                       IEEERemainder   Remainder operator
// 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

注解

此操作符合 ANSI/IEEE Std 754-1985 第 5.1 节中定义的剩余操作;适用于二进制Floating-Point算术的 IEEE 标准;电气和电子工程师协会;1985.

方法 IEEERemainder余数运算符不同。 虽然两者在除法后返回余数,但它们使用的公式是不同的。 方法的 IEEERemainder 公式为:

IEEERemainder = dividend - (divisor * Math.Round(dividend / divisor))

相比之下,余数运算符的公式为:

Remainder = (Math.Abs(dividend) - (Math.Abs(divisor) *
            (Math.Floor(Math.Abs(dividend) / Math.Abs(divisor))))) *
            Math.Sign(dividend)

适用于

产品 版本
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0