Math.IEEERemainder(Double, Double) Metodo

Definizione

Restituisce il resto della divisione tra il numero specificato e un altro numero specificato.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

Parametri

x
Double

Dividendo.A dividend.

y
Double

Divisore.A divisor.

Restituisce

Un numero uguale a x - (y Q), dove Q è il quoziente di x / y arrotondato all'intero più vicino; se x / y è contenuto tra due interi, verrà restituito l'intero pari.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).

Se x - (y Q) è zero, verrà restituito il valore +0 se x è positivo oppure -0 se x è negativo.If x - (y Q) is zero, the value +0 is returned if x is positive, or -0 if x is negative.

Se y = 0, verrà restituito NaN.If y = 0, NaN is returned.

Esempi

Nell'esempio seguente viene contrapposto il resto restituito dal IEEERemainder metodo con il resto restituito dall' operatore resto.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

Commenti

Questa operazione è conforme all'operazione resto definita nella sezione 5,1 di ANSI/IEEE STD 754-1985; Standard IEEE per aritmetica a virgola mobile binaria; Institute of Electrical and Electronics Engineers, 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.

Il IEEERemainder metodo non è uguale all' operatore resto.The IEEERemainder method is not the same as the remainder operator. Sebbene entrambi restituiscano il resto dopo la divisione, le formule utilizzate sono diverse.Although both return the remainder after division, the formulas they use are different. La formula per il IEEERemainder metodo è:The formula for the IEEERemainder method is:

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

Al contrario, la formula per l'operatore di resto è: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)  

Si applica a