我有一段程序運行一段時間,一切正常,直到發生這種奇怪的事情。當我將數字字符串轉換爲Single時,我無法獲得我想要的值。例如:c#將字符串轉換爲單個
Convert.ToSingle("11006.954")
返回值11006.9541 Convert.ToSingle("20678.228")
返回值20678.2285
我知道我可以使用Convert.ToDouble修復它,但它會需要數天才能修改現有的系統。我正在使用vs2003 .net 1.1。
我有一段程序運行一段時間,一切正常,直到發生這種奇怪的事情。當我將數字字符串轉換爲Single時,我無法獲得我想要的值。例如:c#將字符串轉換爲單個
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中的進一步信息。
謝謝。這真的有幫助。看起來像我在做一個新手的錯誤:第 – nonetaku 2011-03-29 09:13:51
[這是爲什麼](http://floating-point-gui.de/) – Blorgbeard 2011-03-29 07:43:45