BigDecimal 使用

本文详细介绍了Java中BigDecimal类的使用方法,包括加、减、乘、除等运算的精确处理,以及不同舍入模式的应用。同时,对比了BigDecimal与float、double在商业计算中的优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算 , float和double只能用来做科学计算或者是工程计算,在商业计算中要用java.math.BigDecimal;

BigDecimal b1 = new BigDecimal("34.567");
BigDecimal b2 = new BigDecimal("1024");

//加
BigDecimal add = b1.add(b2);
BigDecimal bigDecimal1 = add.setScale(2, BigDecimal.ROUND_DOWN);        //直接截取小数,删除多余位数
BigDecimal bigDecimal2 = add.setScale(2, BigDecimal.ROUND_UP);          //进位处理
BigDecimal bigDecimal3 = add.setScale(2, BigDecimal.ROUND_HALF_DOWN);   //四舍五入,2.35变成2.3,如果是5则向下舍
BigDecimal bigDecimal4 = add.setScale(2, BigDecimal.ROUND_HALF_UP);     //四舍五入

//减
BigDecimal subtract = b2.subtract(b1);
BigDecimal subtract1 = subtract.setScale(2, BigDecimal.ROUND_DOWN);        //直接截取小数,删除多余位数
BigDecimal subtract2 = subtract.setScale(2, BigDecimal.ROUND_UP);          //进位处理
BigDecimal subtract3 = subtract.setScale(2, BigDecimal.ROUND_HALF_DOWN);   //四舍五入,2.35变成2.3,如果是5则向下舍
BigDecimal subtract4 = subtract.setScale(2, BigDecimal.ROUND_HALF_UP);     //四舍五入

//乘
BigDecimal multiply = b1.multiply(b2);
BigDecimal multiply1 = multiply.setScale(2, BigDecimal.ROUND_DOWN);        //直接截取小数,删除多余位数
BigDecimal multiply2 = multiply.setScale(2, BigDecimal.ROUND_UP);          //进位处理
BigDecimal multiply3 = multiply.setScale(2, BigDecimal.ROUND_HALF_DOWN);   //四舍五入,2.35变成2.3,如果是5则向下舍
BigDecimal multiply4 = multiply.setScale(2, BigDecimal.ROUND_HALF_UP);     //四舍五入

//除
BigDecimal divide = b1.divide(b2);
BigDecimal divide1 = divide.setScale(2, BigDecimal.ROUND_DOWN);          //直接截取小数,删除多余位数
BigDecimal divide2 = divide.setScale(2, BigDecimal.ROUND_UP);            //进位处理
BigDecimal divide3 = divide.setScale(2, BigDecimal.ROUND_HALF_DOWN);     //四舍五入,2.35变成2.3,如果是5则向下舍
BigDecimal divide4 = divide.setScale(2, BigDecimal.ROUND_HALF_UP);       //四舍五入

String s = divide.toString();                                            //将BigDecimal对象的数值转换成字符串。
double d = divide.doubleValue();                                         //将BigDecimal对象中的值以双精度数返回。
float f = divide.floatValue();                                           // 将BigDecimal对象中的值以单精度数返回。
long l = divide.longValue();                                             //将BigDecimal对象中的值以长整数返回。
int i = divide.intValue();                                               //将BigDecimal对象中的值以整数返回

// BigDecimal是通过使用compareTo(BigDecimal)来比较的(效率比double和float差)
BigDecimal a = new BigDecimal("1");
BigDecimal b = new BigDecimal("2");
BigDecimal c = new BigDecimal("1");
int result1 = a.compareTo(b);
System.out.println(result1);  //-1
int result2 = a.compareTo(c);
System.out.println(result2);  //0
int result3 = b.compareTo(a);
System.out.println(result3);  //1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值