L. *_*ins 11 c# string format floating-point
我有一个浮动值:12345.6489
我使用时格式化:
(12345.6489f)的ToString( "F1")
然后我得到了结果
12345.7
但这是不正确的,因为它应该是12345.6.
有谁知道为什么会这样?另一个提示是在格式化之前转换为double会返回正确的结果,如果我的浮点值稍微小一点,例如1234.6489,那么我也得到正确的结果.
这似乎与我前段时间问的一个问题有关:Round-twice error in .NET's Double.ToString method
请注意,如果您拨打.ToString("G")
您的号码,它会正确四舍五入为12345.65
。如果将四舍五入后的数字四舍五入到小数点后一位,就会出现问题。
当我早些时候调查自己的问题时,我还发现了一些无法解释为两次循环错误的示例,因此也请检查该线程。
加法:请注意,任何可以(精确地)由 a 表示的数字float
也可以由 a 表示(带有大量零位)double
。人们可以使用以下技巧(问题也提到了):
float x = 12345.6489f;
string trick = ((double)x).ToString("F1");
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4503 次 |
最近记录: |