JJ1*_*180 34 java rounding bigdecimal arithmeticexception
在我的代码中进行了一系列计算之后,我有了一个BigDecimal
有价值的东西0.01954
然后我需要将其乘以BigDecimal
,100
并希望计算值为1.95
我不希望执行任何向上或向下舍入,我只是希望截断超过两位小数的任何值
我尝试将比例设置为2,但后来我得到一个ArithmeticException
说法四舍五入是必要的.如何在不指定舍入的情况下设置比例?
Gri*_*Dog 58
使用RoundingMode.DOWN或RoundingMode.FLOOR.
BigDecimal newValue = myBigDecimal.setScale(2, RoundingMode.DOWN);
Run Code Online (Sandbox Code Playgroud)
小智 9
当我使用一个 BigDecimal 设置另一个 BigDecimal 时,我遇到了截断问题。源可以具有具有不同十进制值的任何值。
BigDecimal source = BigDecimal.valueOf(11.23); // could 11 11.2 11.234 11.20 etc
Run Code Online (Sandbox Code Playgroud)
为了正确截断和缩放两位小数,我必须使用源的字符串值而不是 BigDecimal 或 double 值。
new BigDecimal(source.toPlainString()).setScale(2, RoundingMode.FLOOR))
Run Code Online (Sandbox Code Playgroud)
我用它来表示货币,这总是会产生带有 2 位小数的值。
使用包含RoundingMode的setScale覆盖:
value.setScale(2, RoundingMode.DOWN);
Run Code Online (Sandbox Code Playgroud)