我有一个程序运行了一段时间,一切正常,直到这件奇怪的事情发生。当我将一个数字字符串转换为 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
。
请参阅我关于 binary floating point 的文章和 decimal floating point在 .NET 中获取更多信息。
关于c# 将字符串转换为单个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5469319/