/**
* 精度丢失问题解决方法
*/
public static void main(String[] args) {
double a = 1.0;
double b = 0.9;
System.out.println(a - b);
// 解决精度丢失问题方法如下
BigDecimal big = new BigDecimal(a + "");
BigDecimal big2 = new BigDecimal(b + "");
// 两个值相加-返回一个BigDecimal对象
BigDecimal subtract = big.subtract(big2);
// 将类型转换为Double类型
System.out.println(subtract.doubleValue());
System.out.println("==========================");
getValue();
}
public static void getValue() {
BigDecimal one = new BigDecimal("5");
BigDecimal two = new BigDecimal("10");
// 加法:
BigDecimal add = one.add(two);
System.out.println("(加法)10+5=" + add);
// 减法:
BigDecimal subtract = two.subtract(one);
System.out.println("(减法)10-5=" + subtract);
// 乘法:
BigDecimal result = one.multiply(two);
System.out.println("(乘法)10*5=" + result);
// 除法:
BigDecimal divide = two.divide(one);
System.out.println("(除法)10/5=" + divide);
// 取余:
BigDecimal result2 = two.remainder(one);
System.out.println("(取余)10%5=" + result2);
}
输出结果:
0.09999999999999998
0.1
==========================
(加法)10+5=15
(减法)10-5=5
(乘法)10*5=50
(除法)10/5=2
(取余)10%5=0