英語で読む

次の方法で共有


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 が 2 つの整数の中間に位置する場合は、偶数の整数が返されます。

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