使用 BigDecimal 将比例设置为负数

Pau*_*ers 0 java bigdecimal

像这样将比例设置为负数是否有意义?

BigDecimal result;
    .
    .
    .
result = result.setScale(-1, RoundingMode.HALF_UP)
Run Code Online (Sandbox Code Playgroud)

如果你这样做会发生什么?

rge*_*man 5

是的,在某些情况下将比例设置为负数是有意义的。这仅仅意味着数量四舍五入到最接近10-scale数字,或者只是10在这种情况下。

BigDecimal bd = new BigDecimal(1094);
bd = bd.setScale(-1, RoundingMode.HALF_UP);
System.out.println(bd);
System.out.println(bd.doubleValue());
Run Code Online (Sandbox Code Playgroud)

印刷

1.09E+3
1090.0
Run Code Online (Sandbox Code Playgroud)

1.09E+3等同于double价值1090.0

当一个数量的科学测量的有效位数少于正常表示该数字所需的总位数时,这很有用。这种数字的精度小于数字的大小。

如果地球到太阳的距离是 92,960,000 英里,如果这个值只有 5 位有效数字,那么这相当于

BigDecimal bd = new BigDecimal(92960000.0);
bd = bd.setScale(-3, RoundingMode.HALF_UP);// 3 insignificant/imprecise "0" digits
System.out.println(bd);
Run Code Online (Sandbox Code Playgroud)

哪个打印

9.2960E+7
Run Code Online (Sandbox Code Playgroud)

该数字四舍五入到最接近的 1,000。