2011-02-18 25 views
0

我怎麼能找到可以存儲在float中的最大兩位小數精度值?最大值可以以兩位數的精度(2位精度)存儲在Java float中?

從我的理解,在32位浮點,我們有24(23 + 1),用於存儲不包括指數的數量。是2^24是我們可以存儲的最大值?

在此先感謝。 Sriraman

+1

float的限制由Float.MIN_VALUE和Float.MAX_VALUE給出。 「兩位小數精度」是什麼意思? – 2011-02-18 08:43:09

+1

如果你正在考慮在float中存儲一個貨幣值(小數點後兩位是我的出處),請再想一想,並使用一個比float或double更適合的數據類型 – 2011-02-18 09:01:30

回答

2

2^24是可以準確存儲的最大整數。您可以存儲的最大兩位小數位數值不會降低精度。 2 ^一百分之二十四。

注:即使0.1 & 0.01不能準確地存儲,但與舍入,你可以沒有錯誤得到這個值。所以從字面上看問題,最大的值是0.00。 ;)

與精度兩位數的最大值接近Float.MAX_VALUE,但我不認爲那是你的意思。

0

在IEEE 754單精度二進制浮點格式的信息可以在wikipedia

找到我想有沒有可能找到這樣一個數字。 您正在談論一個數字,其中包含兩個十進制數字,但是您希望將此數字作爲二進制值存儲。

當你完全能夠存儲在一個32位浮點的1.00精確值,你將無法儲存0.99。

0

您無法在float值中指定精度。如果你將自己限制在2個小數位,那麼你不會得到更多的空間來換取別的東西。

0

如果您只是想要在點之後存儲精確到兩位小數的數字,請將該數字作爲整數存儲100次(或long,取決於數字的大小),並將點(或逗號)添加到格式化(解析時刪除)。

這很容易控制。