一、设定小数位
-
BigDecimal num1 = new BigDecimal(2.225667);//这种写法不允许,会造成精度损失
-
BigDecimal num2 = new BigDecimal(2);//这种写法是可以的
-
BigDecimal num = new BigDecimal(“2.225667”);//一般都会这样写最好
-
int count = num.scale();
System.out.println(count);//6 返回的是小数点后位数
BigDecimal b = new BigDecimal("2.225667").setScale(2, BigDecimal.ROUND_DOWN);
System.out.println(b);//2.22 直接去掉多余的位数
BigDecimal.ROUND_DOWN 直接舍去
BigDecimal.ROUND_UP 末位直接进1
ROUND_CEILING 正数进位向上,负数舍位向上
ROUND_FLOOR 正数舍位向下,负数进位向下
ROUND_HALF_UP 四舍五入(若舍弃部分>=.5,就进位)
ROUND_HALF_DOWN 四舍五入(若舍弃部分>.5,就进位)
ROUND_HALF_EVEN 四舍五入(凑偶)
二、去掉多余的零
stripTrailingZeros() 去零
System.out.println( new BigDecimal("100.000").stripTrailingZeros().toString());
其中,stripTrailingZeros()函数就是用于去除末尾多余的0的,但是此时程序的输出为: 1E+2
是科学计数法,可能并不是我们想要的。
解决的方法很简单,如果想要避免输出科学计数法的字符串,我们要用toPlainString()函数代替toString()。如:
System.out.println( new BigDecimal("100.000").stripTrailingZeros().toPlainString());
此时程序的输出就为 100