2011-03-29 138 views
2

我有一段程序運行一段時間,一切正常,直到發生這種奇怪的事情。當我將數字字符串轉換爲Single時,我無法獲得我想要的值。例如:c#將字符串轉換爲單個

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

我知道我可以使用Convert.ToDouble修復它,但它會需要數天才能修改現有的系統。我正在使用vs2003 .net 1.1。

+2

[這是爲什麼](http://floating-point-gui.de/) – Blorgbeard 2011-03-29 07:43:45

回答

10

你似乎期待Single能夠代表確切你給的數字。它不能。 11006.9541是距離11006.954最近的Single。 (事實上​​,最接近Single確切值11006.9541015625,但我懷疑你在調試器中看到11006.9541)

如果您希望的數字精確表示最初表現爲小數,你應該使用System.Decimal

請參閱我的文章binary floating pointdecimal floating point在.NET中的進一步信息。

+0

謝謝。這真的有幫助。看起來像我在做一個新手的錯誤:第 – nonetaku 2011-03-29 09:13:51