我正在尝试使用BigDecimal划分一个值,当这个值是这个值的一个Decimates BigDecimal并且我不会这样做。我需要显示decimates值。例如,如果我划分10 / 3 = 3.33333
,我需要显示3.33
,但会显示3.00
我怎么能这样做?
//Result-> 10 / 2 = 3,3333333
BigDecimal result = new BigDecimal(0);
BigDecimal v1 = new BigDecimal(10);
BigDecimal v2 = new BigDecimal(3);
result = v1.divide(v2, BigDecimal.ROUND_UP);
//output = 3
//I need output = 3.33
答案 0 :(得分:2)
使用BigDecimal
s初始化的int
的比例是0
,这意味着舍入操作将舍入为1。在您的示例中,分部将向上舍入为4
。
将第一个BigDecimal
的比例设置为2
,通过分区保留。同时将舍入模式设置为" down"。
BigDecimal v1 = new BigDecimal(10).setScale(2);
BigDecimal v2 = new BigDecimal(3);
result = v1.divide(v2, BigDecimal.ROUND_DOWN);
现在打印results
会产生3.33
的输出。
您也可以使用RoundingMode
枚举作为舍入常量的替代品。此外,您可以使用ROUND_HALF_DOWN
,ROUND_HALF_UP
或ROUND_HALF_EVEN
(或等效的RoundingMode
)。
您可以使用具有适当小数位数的字符串来隐式设置比例。
BigDecimal v1 = new BigDecimal("10.00"); // scale of 2
答案 1 :(得分:1)
尝试 compile
和run
这个java类,它可以按你的意愿工作:
import java.math.*;
class decimal {
public static void main(String[] args) {
BigDecimal result = new BigDecimal(0);
BigDecimal v1 = new BigDecimal(10);
BigDecimal v2 = new BigDecimal(3);
result = v1.divide(v2,2,BigDecimal.ROUND_HALF_UP);
System.out.println(result);
}
}
输出:3.33
你想要两位小数,这就是我设置scale=2
答案 2 :(得分:1)
尝试将比例尺添加到BigDecimal,如下所示:
public class User {
public static void main(String[] args) {
BigDecimal result = new BigDecimal(0);
BigDecimal v1 = new BigDecimal(10).setScale(2);
BigDecimal v2 = new BigDecimal(3);
result = v1.divide(v2, BigDecimal.ROUND_DOWN);
System.out.println(result);
}
}