簡體   English   中英

使用BigDecimal的小數點后的最大位數

[英]Maximum number of digits after the decimal point using BigDecimal

在Java中BigDecimal值的小數點后我們可以擁有的最大位數是多少?

它(幾乎)是無限的。 如果將scale設置為整數的最大值,則可以在小數點后存儲大約20億個數字,但如果嘗試執行此操作,可能會耗盡內存。 如果您需要存儲這么多數字以確定限制是一個問題,那么您可能需要重新考慮程序的設計。

請參閱BigDecimal文檔

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

根據BigDecimal Java 2 Platform Standard Ed中提到的內容 5.0

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

根據Java的32位整數實現

int:int數據類型是32位帶符號的二進制補碼整數。 它的最小值為-2,147,483,648,最大值為2,147,483,647(含)。 對於整數值,此數據類型通常是默認選擇,除非有理由(如上所述)選擇其他內容。 此數據類型很可能足以容納您的程序將使用的數字,但如果您需要更寬范圍的值,請使用long。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM