In 双正无穷文档中写道:
当运算结果大于 MaxValue 时返回该常量。
但是,当我尝试将数字添加到最大值时double
,它不会返回infinity
。我尝试过运行这个:
double maxVal = Double.MaxValue;
maxVal = maxVal + 10000000000000000000;
Console.WriteLine(maxVal + " " + Double.IsInfinity(maxVal)); //prints 1.79769313486232E+308 False
为什么会发生这种情况?为什么不显示maxVal
as infinity
?
这是一个工作小提琴。
那是因为您要添加的数字是way太小,无法在上面留下凹痕Double.MaxValue
value.
的精度double
大约有 15 位数字,因此您需要一个至少为1e292
让它足够大以产生影响。
那将是10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
写出来了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)