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

Los*_*nos 1 .net c#

如何获得double.ToString 有时不会截断最后的数字.

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

? 0.87912328514094507
0.87912328514094507
? 0.87912328514094507.ToString()
"0,879123285140945"
Run Code Online (Sandbox Code Playgroud)

Win7 fwiw上的Dotnet 4.6.2.

Eri*_*ert 11

实现这一目标有两种标准机制.

如果你"R"作为参数传递给ToString那么你得到往返字符串.也就是说,将double转换为字符串,然后将字符串转换为double的字符串总是为您提供开头的双精度字符串.

如果您"G17"作为参数传递,那么您将获得标准字符串格式,但扩展到17个小数位.

你不知道这一点当然可以原谅!这种机制不是特别容易发现的.在过去的40年里,我并不是格式化字符串未能发展的忠实粉丝.

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