java.math.BigDecimal 加减乘除
方法的声明:
public BigDecimal divide(BigDecimal divisor, int scale, int roundingMode)
参数解析:
divisor是除数,scale是精确度,roundingMode是结果的取值方式。
返回值:
返回的结果也是一个BigDecimal
BigDecimal a = new BigDecimal (10);
BigDecimal b = new BigDecimal (9);
BigDecimal c = new BigDecimal (8);
//注意:a、b、C均不能为null,否则会报空指针
//四个方法返回的结果类型都为 BigDecimal,可以连续操作
//加法 add()
System.out.println(a.add(b));
//减法 subtract()
System.out.println(a.subtract(b));
//乘法 multiply()
System.out.println(a.multiply(b));
//除法 divide()
//使用除法时注意:
//1.需要设置结果的小数保留位数,防止存在除不尽的情况,如果在知道能够除尽的前提下可以不设置
//2.除数不能为0
//3.以上两种情况都会报 java.lang.ArithmeticException
int scale = 2; //2表示结果保留两位小数
int roundingMode = 4; //4表示舍入方式为四舍五入,该参数取值范围为[0-7],是BigDecimal类定义的8个静态常量
System.out.println(a.divide(b, scale, roundingMode));//表示保留两位小数,同时进行四舍五入
//综合使用
System.out.println(a.add(b).subtract(c));//a + b - c
System.out.println(a.multiply(b).divide(c, scale, roundingMode));//a * b / c
System.out.println((a.add(c)).divide(b));//(a + c)/b
toPlainString()和stripTrailingZeros()
stripTrailingZeros()函数就是用于去除末尾多余的0的;
要避免输出科学计数法的字符串,要用toPlainString()函数代替toString()。
即:
BigDecimal num = new BigDecimal ("0.10");//初始化参数推荐使用String类型
可以这样使用==》num .stripTrailingZeros().toPlainString() ; 结果是0.1
toPlainString() //转为普遍计数法输出
//给一个字符串1.238761976E-10 //如何得到0.0000000001238761976这个字符串呢? BigDecimal bd = new BigDecimal("1.238761976E-10"); System.out.println(bd.toPlainString());
stripTrailingZeros() //去掉末尾0
//给一个字符串1245600.000 //如何得到1245600这个字符串? BigDecimal bd=new BigDecimal("1245600.000"); System.out.println(bd.stripTrailingZeros());