【发布时间】:2018-11-16 06:53:56
【问题描述】:
如何获得 double.ToString 以 不 有时会截断最后一位数字。
如果我在 Visualstudio 即时窗口或 Quickwatch 中显示双精度,我会看到 17 位小数。当我将其转换为字符串时,我看到 15.
这可能有一个很好的理由,但我的问题是如何解决它。
? 0.87912328514094507
0.87912328514094507
? 0.87912328514094507.ToString()
"0,879123285140945"
Win7 fwiw 上的 Dotnet 4.6.2。
【问题讨论】:
-
0.87912328514094507.ToString("R")- 往返格式 - docs.microsoft.com/en-us/dotnet/standard/base-types/… -
请注意,从技术上讲,两种表示都在截断底层双精度。如果您的目标是获得准确的表示,您可能需要考虑使用 Jon Skeet 的
DoubleConverter类。请参阅stackoverflow.com/a/1658420/18192 进行讨论。请注意,通常使用精确表示是不合适的,因为它显示的精度比 double 实际表示的要高。