Double型の場合、値が無限大でもSignメソッドは適切な符号を返しますが、非数(NaN, 0/0)の場合はArithmeticExceptionをスローします。
Math.Signメソッドで非数(NaN)を指定すると例外ArithmeticExceptionをスローする
using System;
class Sample {
static void Main()
{
Console.WriteLine(Math.Sign(+1.0 / 0.0));
Console.WriteLine(Math.Sign(-1.0 / 0.0));
Console.WriteLine(Math.Sign( 0.0 / 0.0));
}
}
実行結果
1 -1 ハンドルされていない例外: System.ArithmeticException: 関数は浮動小数点の非数値を受け入れません。 場所 System.Math.Sign(Double value) 場所 Sample.Main()