调试项目时遇到
java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.
无穷小数位
这样我们在使用BigDecimal做【除法】或【乘法】一定要设置有效位数和舍入模式
一、除法运算
BigDecimal divide(BigDecimal divisor, int scale, RoundingMode roundingMode)
二、BigDecimal 保留有效位数
b.setScale(2, BigDecimal.ROUND_HALF_UP) 表明四舍五入,保留两位小数
三、float/double保留有效位数
1. 方法一 转换为BigDecimal,然后参考二
2. 方法二
import java.text.DecimalFormat;
String a = new DecimalFormat("###,###,###.##").format(100.12345 );
3. 方法三
float a = 123.2334f;
float b = (float)(Math.round(a*100))/100;(这里的100就是2位小数点,如果要其它位,如4位,这里两个100改成10000)