精度丢失

//精度丢失
System.out.println(0.1+0.2);
System.out.println(1.0-0.32);
System.out.println(1.015*100);
System.out.println(1.301/100);

BigDecimal

//注意new出来的 BigDecimal() 括号写字符串
BigDecimal b1=new BigDecimal("1.2");
//使用valueOf()
BigDecimal b2=BigDecimal.valueOf(1.2);

//求和
System.out.println(b2.add(b1));
//减
System.out.println(b2.subtract(b1));
//相乘
System.out.println(b2.multiply(b1));
//除
System.out.println(b2.divide(b1));

//算数异常
//当除不尽时会报错
BigDecimal b3=BigDecimal.valueOf(1);
BigDecimal b4=BigDecimal.valueOf(3);
//报错
System.out.println(b3.divide(b4));
//解决方案
//四舍五入
System.out.println(b3.divide(b4, RoundingMode.HALF_UP));
//向上取整
System.out.println(b3.divide(b4, RoundingMode.CEILING));
//向下取整
System.out.println(b3.divide(b4, RoundingMode.FLOOR));

保留小数位

System.out.println(b3.divide(b4,2, RoundingMode.FLOOR));

把BigDecimal转换为doubleValue

double doubleValue=b5.doubleValue();
最后修改:2023 年 05 月 06 日
如果觉得我的文章对你有用,请随意赞赏