gpt4 book ai didi

c# - 使用 ToString ("F1"时 float 的舍入不正确)

转载 作者:可可西里 更新时间:2023-11-01 08:48:20 25 4
gpt4 key购买 nike

我有一个浮点值: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。如果将四舍五入的数字四舍五入到一位小数,就会出现问题。

当我之前调查我自己的问题时,我也发现了一些无法解释为 round-twice 错误的例子,所以也检查那个线程。

补充:请注意,任何可以用float(精确地)表示的数字,也可以用表示(带有很多零位) >双。可以使用以下技巧(问题也提到了这一点):

float x = 12345.6489f;
string trick = ((double)x).ToString("F1");

关于c# - 使用 ToString ("F1"时 float 的舍入不正确),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14325214/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com