double.ToString会截断最后2位数字,而在调试时仍然可以看到它们

时间:2018-11-16 06:53:56

标签: c# .net

如何获取double.ToString改为 not 有时会截断最后一位数字。

如果我在Visualstudio即时窗口或Quickwatch中显示一个双精度值,则会看到17个小数。当我将其转换为字符串时,会看到15。
可能有一个很好的理由,但是我的问题是如何解决它。

? 0.87912328514094507
0.87912328514094507
? 0.87912328514094507.ToString()
"0,879123285140945"

Win7上的Dotnet 4.6.2。

1 个答案:

答案 0 :(得分:11)

有两种实现该目标的标准机制。

如果将"R"作为参数传递给ToString,则将得到往返字符串。也就是说,将双精度型转换为字符串,然后再将字符串转换为双精度型的字符串始终会为您提供开始时使用的双精度型。

如果将"G17"作为参数传递,则将获得标准的字符串格式,但会扩展到小数点后17位。

您肯定会因为不知道而被原谅!这种机制不是特别可发现。我不是过去40年来格式化字符串如何无法发展的忠实粉丝。

有关更多详细信息,请阅读文档:https://docs.microsoft.com/en-us/dotnet/api/system.double.tostring