Double运算丢失精度问题以及BigDecimal用法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Phone_1070333541/article/details/84958843

一、丢失精度问题还原。

public double add() { 
	double number1 = 1; 
	double number2 = 20.2;
	double number3 = 300.03; 
	double result = number1 + number2 + number3; 
	System.out.println(result); 
	return result; 
}

打印结果:321.22999999999996

二、解决方式。

BigDecimal num1 = new BigDecimal("100");  
BigDecimal num2 = new BigDecimal("50"); 
// 或者
BigDecimal num1 = new BigDecimal(100D);  
BigDecimal num2 = new BigDecimal(50D); 
       
//加法
BigDecimal result1 = num1.add(num2);
out.println("和是   :  " + result1);
     
//减法 
BigDecimal result2 = num1.subtract(num2);
out.println("差是   :  " + result2);
     
//乘法
BigDecimal result3 = num1.multiply(num2);
out.println("积是   :  " + result3);

//除法
BigDecimal result4 = num1.divide(num2);
out.println("商是   :  " + result4);
   
//比较
BigDecimal num = new BigDecimal("100");     //用做比较的值  
out.println(num1.compareTo(num2));            //大于 时,返回 1 
out.println(num.compareTo(num1));            //等于 时,返回 0  
out.println(num2.compareTo(num1));            //小于 时,返回 -1

out.println(num1.min(num2));                //求两个数的最小值,返回小的数
out.println(num1.max(num2));                //求两个数的最大值,返回大的数

猜你喜欢

转载自blog.csdn.net/Phone_1070333541/article/details/84958843
今日推荐