Leer en inglés

Compartir a través de


Math.IEEERemainder(Double, Double) Método

Definición

Devuelve el resto de la división de dos números especificados.

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

Parámetros

x
Double

Dividendo.

y
Double

Divisor.

Devoluciones

Número igual a x - (y Q), donde Q es el cociente de x / y redondeado a su entero más próximo (si x / y se encuentra entre dos enteros, se devuelve el entero par).

Si x - (y Q) es cero, se devuelve el valor +0 si x es positivo o -0 si x es negativo.

Si y = 0, se devuelve NaN.

Ejemplos

En el ejemplo siguiente se contrasta el resto devuelto por el IEEERemainder método con el resto devuelto por el operador de resto.

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

Comentarios

Esta operación cumple con la operación de resto definida en la sección 5.1 de ANSI/IEEE Std 754-1985; IEEE Standard for Binary Floating-Point Arithmetic; Instituto de Ingenieros Eléctricos y Electrónicos, Inc; 1985.

El IEEERemainder método no es el mismo que el operador de resto. Aunque ambos devuelven el resto después de la división, las fórmulas que usan son diferentes. La fórmula del IEEERemainder método es:

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

En cambio, la fórmula para el operador de resto es:

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

Se aplica a

Producto Versiones
.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