簡體   English   中英

試圖限制BigDecimal除法Java的小數位數

[英]Trying to limit number of decimal places for BigDecimal division Java

我是Java世界的新手,正在嘗試學習如何使用BigDecimal。 我現在想做的是限制除法問題中的小數位數。 我的代碼行是:

quotient=one.divide(x);

在商中,one和x均為BigDecimal類型。 但是,我不知道如何限制要打印的小數位數,即x是一個大數字,一個等於1。感謝所有幫助,謝謝!

如果該除法器具有無終止的十進制擴展名,那么該代碼將死得很慘。 請參閱divide(BigDecimal divisor) javadoc divide(BigDecimal divisor)

如果無法表示確切的商(因為它具有無終止的十進制擴展),則拋出ArithmeticException

例:

BigDecimal one = BigDecimal.ONE;
BigDecimal x = BigDecimal.valueOf(7);
one.divide(x); // throws java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.

使用divide()的其他重載之一,例如divide(BigDecimal divisor, int scale, RoundingMode roundingMode)

BigDecimal one = BigDecimal.ONE;
BigDecimal x = BigDecimal.valueOf(7);
BigDecimal quotient = one.divide(x, 5, RoundingMode.HALF_UP);
System.out.println(quotient); // prints: 0.14286
BigDecimal one = BigDecimal.ONE;
BigDecimal x = BigDecimal.valueOf(7);
BigDecimal quotient = one.divide(x, 30, RoundingMode.HALF_UP);
System.out.println(quotient); // prints: 0.142857142857142857142857142857

要設置變量BigDecimal中的小數位數,您可以根據需要實現以下語句

value = value.setScale(2, RoundingMode.CEILING)在2個小數點后進行“剪切”

要么

value = value.setScale(2, RoundingMode.HALF_UP)做普通的回合

請參見將BigDecimal舍入為*始終*具有兩個小數位

暫無
暫無

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

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