Math.IEEERemainder(Double, Double) メソッド

定義

指定した数を別の指定数で除算した結果の剰余を返します。Returns the remainder resulting from the division of a specified number by another specified number.

public:
 static double IEEERemainder(double x, double y);
public static double IEEERemainder (double x, double y);
static member IEEERemainder : double * double -> double
Public Shared Function IEEERemainder (x As Double, y As Double) As Double

パラメーター

x
Double

被除数。A dividend.

y
Double

除数。A divisor.

戻り値

x - (y Q) に等しい数値。Q は x / y の商を丸めた近似整数を示します。x / y が 2 つの整数の中間に位置する場合は、偶数の整数が返されます。A 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).

x - (y Q) がゼロのとき、x が正である場合は値 +0、x が負である場合は -0 が返されます。If x - (y Q) is zero, the value +0 is returned if x is positive, or -0 if x is negative.

y = 0 の場合は、NaN が返されます。If y = 0, NaN is returned.

次の例では、IEEERemainder メソッドによって返される剰余と、剰余演算子によって返される剰余を比較しています。The following example contrasts the remainder returned by the IEEERemainder method with the remainder returned by the remainder operator.

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
Module Example
    Public Sub 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)
    End Sub

    Private Sub ShowRemainders(number1 As Double, number2 As Double)
        Dim formula As String = $"{number1} / {number2} = "
        Dim ieeeRemainder As Double = Math.IEEERemainder(number1, number2)
        Dim remainder As Double = number1 Mod number2
        Console.WriteLine($"{formula,-16} {ieeeRemainder,18} {remainder,20}")
    End Sub
End Module
' 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 で定義されている剰余演算に準拠しています。バイナリ浮動小数点演算の IEEE 標準電化技術研究所、Inc.1985。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.

IEEERemainder メソッドは、剰余演算子と同じではありません。The IEEERemainder method is not the same as the remainder operator. どちらも除算後の剰余を返しますが、使用する数式は異なります。Although both return the remainder after division, the formulas they use are different. IEEERemainder メソッドの式は次のとおりです。The formula for the IEEERemainder method is:

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

これに対し、剰余演算子の数式は次のようになります。In contrast, the formula for the remainder operator is:

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

適用対象