簡體   English   中英

BigDecimal Java。如何在前面加上append個零

[英]BigDecimal Java. How to append zeros in front

我的問題基本上如下:

當我使用帶有 BigDecimal 的值時,如何在隨機數前面添加 append 個零? 假設我想要一個 <10 的數字遵循完全隨機的模式。 現在我想在數字前面加零,所以實際數量加起來是10個數字。

這是一個例子: BigDecimal num = new BigDecimal(2353);

現在我想要輸出:0000002353

是否有 function 將數字附加到 BigDecimal 類型? 我找不到任何。

我嘗試使用 while 循環來檢查數字是否小於十。 但我對 Big Decimal 的理解還不夠深入,無法將整數值與 BigDecimal 類型進行實際比較。 提前感謝您的幫助!

如果您改用BigInteger (或任何 integer 類型,例如intlong ),您可以使用

String.format("%010d", BigInteger.valueOf(2353))

格式字符串中的前導0表示用 0 填充,后面的10是所需的長度...

BigDecimal旨在用於存儲大的浮點數。 由於在浮點數中 0000002353 和 2353 之間沒有任何區別,因此沒有合理的方法可以將 append 前導 0 轉換為BigDecimal ,就像沒有合理的方法可以將 append 前導 0 轉換為普通float一樣。 根據您正在尋找的行為,我建議使用String來存儲您的號碼,然后在您要執行任何操作時與BigDecimal進行相互轉換。

要將整數類型與BigDecimal進行比較,首先將變量轉換為BigDecimal ,然后調用BigDecimalcompareTo方法。 更多信息在這個問題中。

由於您對格式化數字感興趣,您可能需要查看DecimalFormat class,它允許根據指定的模式格式化浮點數和 integer 數字。

BigDecimal num = new BigDecimal(2353);
        
DecimalFormat f1 = new DecimalFormat("0000000000");
DecimalFormat f2 = new DecimalFormat("0,000,000,000");
        
System.out.println(f1.format(num));
System.out.println(f2.format(num));

Output:

0000002353
0,000,002,353

如果最大位數是 10 並且只允許整數,那么除了使用long和標准格式外,您不需要任何其他東西:

long myNumber = 123456;
System.out.printf("%010d%n", myNumber);

暫無
暫無

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

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