我有一个程序运行了一段时间,一切正常,直到发生这种奇怪的事情。当我将数字字符串转换为Single时,我只是无法获得所需的值。例如:

Convert.ToSingle("11006.954")返回值11006.9541
Convert.ToSingle("20678.228")返回值20678.2285

我知道我可以使用Convert.ToDouble修复它,但是修改现有系统将需要几天的时间。我正在使用vs2003 .net 1.1。

最佳答案

您似乎期望Single能够准确表示您给出的数字。不行11006.9541是最接近11006.954的Single值。 (实际上,最接近的Single的确切值为11006.9541015625,但我怀疑您在调试器中看到11006.9541。)

如果要准确表示最初用小数表示的数字,则应使用System.Decimal

有关更多信息,请参阅我在.NET中有关binary floating pointdecimal floating point的文章。

关于c# - C#将字符串转换为单,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5469319/

10-13 03:11