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());

  

posted @ 2021-10-23 16:04  唯一520  阅读(644)  评论(0编辑  收藏  举报