2010-10-21 877 views

回答

12

它幾乎是無限的。如果將scale設置爲整數的最大值,則可以在小數點後面存儲大約20億位數字,但如果嘗試這樣做,則可能會用完內存。如果您需要存儲如此多的數字以至於極限成爲問題,那麼您可能需要重新考慮程序的設計。

BigDecimal documentation

不可變的,任意精度的有符號十進制數。 BigDecimal由任意精度整數非標定值和32位整數標度組成。如果爲零或正數,則標度是小數點右側的位數。如果是負數,則該數字的非縮放值乘以10乘以該比例否定的冪。由BigDecimal表示的數字的值因此是(非標度值×10 -scale)。

2

根據什麼是在BigDecimal Java 2 Platform Standard Ed. 5.0提到:

不可變的,任意精度的有符號 十進制數。 BigDecimal由 組成,任意精度整數 非縮放值和32位整數 比例。如果爲零或正數,則比例尺 是小數點右邊 的位數。如果爲負值,則 的非縮放值的數量爲 乘以10,否定該比例的 的冪。 的值由 BigDecimal表示的數字因此是(非標度值 ×10 ^( - 標度))。

根據Java's implementation of 32-bit integers

INT:int數據類型是一個32位 符號的二進制補碼整數。其 具有最小值-2,147,483,648, 和最大值2,147,483,647, (含)。對於整數值,除非有理由(如上面的 )選擇其他內容,否則此 數據類型通常是默認的 選項。 這種數據類型最有可能是 ,對於您的 程序將使用的數字來說足夠大,但是如果您需要更大範圍的值,請改爲使用長 。

這意味着對於零或正數比例的數字,您在小數點右邊有2,147,483,647個數字。 對於負比例數字,您將unscaledValue移位到小數點右邊2,147,483,648位。

相關問題