Aracılığıyla paylaş


Math.IEEERemainder(Double, Double) Yöntem

Tanım

Belirtilen bir sayının başka bir belirtilen sayıya bölünmesinden kaynaklanan kalanı döndürür.

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

Parametreler

x
Double

Kar payı.

y
Double

Bölen.

Döndürülenler

- ( Q) değerine eşit x bir sayıdır; burada Q, en yakın tamsayıya yuvarlanmış bölümüdüry / x (iki tamsayının ortasında kalırsaxy / , çift tamsayı döndürülür).y

- x (y Q) sıfır ise, pozitifse x +0 değeri, negatifse x -0 değeri döndürülür.

Eğer y = 0 ise, NaN döndürülür.

Örnekler

Aşağıdaki örnek, yöntemi tarafından IEEERemainder döndürülen geri kalanı, kalan işleç tarafından döndürülen geri kalanıyla karşıttır.

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
open System

let showRemainders number1 number2 =
    let formula = $"{number1} / {number2} = "
    let ieeeRemainder = Math.IEEERemainder(number1, number2)
    let remainder = number1 % number2
    printfn $"{formula,-16} {ieeeRemainder,18} {remainder,20}"
    
printfn "                      IEEERemainder   Remainder operator"
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

// 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

Açıklamalar

Bu işlem, ANSI/IEEE Std 754-1985'in Bölüm 5.1'de tanımlanan kalan işlemiyle uyumlu olur; İkili Floating-Point Aritmetik için IEEE Standard; Elektrik ve Elektronik Mühendisleri Enstitüsü, Inc; 1985.

IEEERemainder yöntemi, kalan işleçle aynı değildir. Her ikisi de bölmeden sonra kalanı döndürse de, kullandıkları formüller farklıdır. Yöntemin IEEERemainder formülü:

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

Buna karşılık, kalan işlecin formülü şu şekildedir:

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

Şunlara uygulanır