c#将字符串转换为单个

时间:2011-03-29 07:39:03

标签: c# .net-1.1

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

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

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

1 个答案:

答案 0 :(得分:10)

您好像希望Single能够完全表示您给出的数字。它不能。 11006.9541是距离11006.954最近的Single值。 (事实上​​,最接近的Single精确值是11006.9541015625,但我怀疑你在调试器中看到了11006.9541。)

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

有关详细信息,请参阅.NET中的binary floating pointdecimal floating point上的文章。