在Double.PositiveInfinity文档中,它写道:
当操作结果大于MaxValue时,返回此常量.
但是,当我尝试将数字添加到最大值时double,它不会返回infinity.我试过这个:
double maxVal = Double.MaxValue;
maxVal = maxVal + 10000000000000000000;
Console.WriteLine(maxVal + " " + Double.IsInfinity(maxVal)); //prints 1.79769313486232E+308 False
Run Code Online (Sandbox Code Playgroud)
为什么会这样?为什么没有显示maxVal为infinity?
这是因为您要添加的数量的方式过小使在一个凹痕Double.MaxValue值.
a的精度double大约是15位数,所以你需要一个至少1e292足以让它变大的数字.
那将被10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000写出来.