c# - 双溢出

标签 c# .net

<分区>

我在使用 double 类型时遇到了一些问题。 在 MSDN,我读到了 double max value以下:

The result of an operation that exceeds Double.MaxValue is 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));

看到这个结果:

0
1,79769313486232E+308
1,79769313486232E+308
False

我不明白,double.MaxValue + 100000 不是正无穷大,而是等于 double MaxValue。根据 msdn 文档,我认为它应该是 PositiveInfinity。

我在 VS2012、.NET 4.5 中测试过

最佳答案

这是舍入/精度;从一个 309 位数字(小数点前)的角度来看,100000 本质上是零。您也可以添加 0

如果您尝试 double.MaxValue * 2 - 即它实际上会注意到的东西,那么它将显示为正无穷大。

关于c# - 双溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20370075/

相关文章:

c# - 我如何在 Javascript 中处理文件 ByteArray

c# - 如何从 C# 中的 Action 委托(delegate)中删除方法

C# - 等待复制操作完成

c# - 无法让 XmlDocument.SelectNodes 检索我的任何节点?

.net - 将 Nullable Enum 设置为 $null - 这真的会导致 PSInvalidCastException 吗?

c# - 是否有 C# IN 运算符?

c# - Xamarin 与原生 iOS 和 Android

c# - 如何使用 csproj 在 .net core 中注册测试发现者

.net - 使用 .NET 4.5/Windows Store/WP8 在可移植类库中导入 DllImport

c# - 使用LINQ转换带索引的for循环