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

一、丢失精度问题还原。

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));                //求两个数的最大值,返回大的数

三、注意

在阿里巴巴手册中这样定义:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值