我對特定的轉換有一個有趣的問題。 當我嘗試將字符串"0,3"
或"0.3"
(根據UICulture
)轉換爲Double
值時,結果爲0,29999999
。我還沒有找到解決方案,以獲得結果0,3
。將字符串轉換爲雙C#
有什麼辦法可以在轉換後得到相同的值?
我對特定的轉換有一個有趣的問題。 當我嘗試將字符串"0,3"
或"0.3"
(根據UICulture
)轉換爲Double
值時,結果爲0,29999999
。我還沒有找到解決方案,以獲得結果0,3
。將字符串轉換爲雙C#
有什麼辦法可以在轉換後得到相同的值?
double
不能代表每個值。它保證代表整數,但就是這樣。如果你需要的東西更像是數字的「人」的逼近,使用decimal
:
decimal val = decimal.Parse("0.3");
注:decimal
也並不表示每個值 - 但它確實近似更趨於怎麼樣的人的方式預計數字工作。特別是,double
幾乎沒有用於貨幣等東西。
Jon Skeet [here](http://stackoverflow.com/a/618596/18192)提供了一些更詳細的信息。點擊鏈接的文章進行深入的解釋。簡單的答案是,「十進制」以10爲基數,與0.3匹配。 'double'在基數2中,不是。 – Brian
這已被問了很多很多很多次。由於十進制值存儲在二進制計算機中,0.3'不能完全表示爲雙精度值。 – mellamokb
查看Marc的回答。值得注意的是,它被稱爲浮點表示而不是表示。 http://en.wikipedia.org/wiki/Floating_point – kenny