Math.IEEERemainder(Double, Double) 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
지정된 수를 지정된 다른 수로 나눈 나머지를 반환합니다.
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
피제수입니다.
- y
- Double
제수입니다.
반환
x
- (y
Q)와 같은 숫자입니다. 여기서 Q는 가장 가까운 정수로 반올림된 x
/ y
의 몫입니다. x
/ y
가 두 수의 중간이면, 짝수가 반환됩니다.
x
- (y
Q)가 0인 경우 x
가 양수이면 값 +0이, x
가 음수이면 값 -0이 반환됩니다.
y
= 0인 경우 NaN이 반환됩니다.
예제
다음 예제에서는 메서드에서 반환된 IEEERemainder 나머지와 나머지 연산자가 반환한 나머지를 대조합니다.
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
설명
이 작업은 ANSI/IEEE Std 754-1985의 섹션 5.1에 정의된 나머지 작업을 준수합니다. 이진 Floating-Point 산술에 대한 IEEE 표준; 전기 전자 엔지니어 연구소, Inc; 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