BigDecimal用法 及其如何解决java数据精确算法
一 传统的算法
public class BigDecimalDemo {
public static void main(String[] args) {
System.out.println(0.09 + 0.01);
System.out.println(1.0 - 0.32);
System.out.println(1.015 * 100);
System.out.println(1.301 / 100);
System.out.println(5/4);
System.out.println(1.0 - 0.12);
}
}
==输出结果==
0.09999999999999999
0.6799999999999999
101.49999999999999
0.013009999999999999
1
0.88
二 BigDecimal 用法
public class BigDecimalDemo {
public static void main(String[] args) {
// System.out.println(0.09 + 0.01)
// System.out.println(1.0 - 0.32)
// System.out.println(1.015 * 100)
// System.out.println(1.301 / 100)
BigDecimal bd1 = new BigDecimal("0.09")
BigDecimal bd2 = new BigDecimal("0.01")
System.out.println("add:" + bd1.add(bd2))
System.out.println("-------------------")
BigDecimal bd3 = new BigDecimal("1.0")
BigDecimal bd4 = new BigDecimal("0.32")
System.out.println("subtract:" + bd3.subtract(bd4))
System.out.println("-------------------")
BigDecimal bd5 = new BigDecimal("1.015")
BigDecimal bd6 = new BigDecimal("100")
System.out.println("multiply:" + bd5.multiply(bd6))
System.out.println("-------------------")
BigDecimal bd7 = new BigDecimal("1.301")
BigDecimal bd8 = new BigDecimal("100")
System.out.println("divide:" + bd7.divide(bd8))
System.out.println("divide:"
+ bd7.divide(bd8, 3, BigDecimal.ROUND_HALF_UP))
// 参数说明 第二参数代表小数点后留几位 最后以为代表 采用的方式(四舍五入的方法)
System.out.println("divide:"
+ bd7.divide(bd8, 8, BigDecimal.ROUND_HALF_UP))
}
}
==输出结果==
divide:0.01301
divide:0.013
divide:0.01301000