我有双重类型的问题.在MSDN上,我读到了以下最大双倍值:
超过Double.MaxValue的操作的结果是Double.PositiveInfinity.
我写了一些测试:
Console.WriteLine(double.MaxValue + 100000 - double.MaxValue);
Console.WriteLine(double.MaxValue);
Console.WriteLine(double.MaxValue + 100000);
Console.WriteLine(double.IsPositiveInfinity(double.MaxValue + 100000));
Run Code Online (Sandbox Code Playgroud)
并看到了这个结果:
0
1,79769313486232E+308
1,79769313486232E+308
False
Run Code Online (Sandbox Code Playgroud)
我不明白,double.MaxValue + 100000不是正无穷大,而是等于MaxValue的两倍.根据msdn文档,我认为它应该是PositiveInfinity.
我在VS2012,.NET 4.5中测试过它
Mar*_*ell 24
这是四舍五入/精确; 从长度为309位(小数点前)的数字的角度来看,100000基本上为零.你不妨补充一下0.
如果你尝试double.MaxValue * 2- 即实际上会引起注意的东西,那么它将显示为正无穷大.
Mar*_*age 10
Double只有大约15个十进制数字的精度因此当你添加Double.MaxValue到100000D没有溢出因为必须在第300个数字之后添加1in 并且这与添加0相同.100000DDouble.MaxValue
如果您执行以下计算
Double.MaxValue + Double.MaxValue/1e16
Run Code Online (Sandbox Code Playgroud)
你得到积极的无限.
| 归档时间: |
|
| 查看次数: |
4353 次 |
| 最近记录: |