搞懂BigDecimal读这篇文章就够了

BigDecimal是java中用到比较多的高精度数据类型,本文将通过代码实例来讲解BigDecimal类的正确使用方法,以避免我们经常犯一些低级的错误。

一、初始化

请注意,BigDecimal的初始化最常用的是下面2种。特别注意,请一定避免使用double类型来进行BigDecimal的初始化。

1、String初始化
new BigDecimal("0.1")   ---推荐
new BigDecimal(0.1)     ---禁用

如果用禁用的代码,那么实际得到可能是: 0.1000000000000000055511151231257827021181583404541015625,特别在资金的计算时,涉及到小数点后面的数字,这时一定要使用String类型进行初始化。

2、valueOf初始化
BigDecimal.valueOf(0.1)

得到的结果与方法1中的一致,double 直接 tostring 为一个字符串的形式进行转换的。

二、加减法
1、加法add
BigDecimal a = new BigDecimal("0.25");
BigDecimal b = new BigDecimal("0.05");
BigDecimal result = a.add(b);    //结果是0.3
2、减法subtract
BigDecimal a = new BigDecimal("0.25");
BigDecimal b = new BigDecimal("0.05");
BigDecimal result = a.subtract(b);    //结果是0.2
三、乘除法
1、乘法multiply
BigDecimal a = new BigDecimal("0.25");
BigDecimal b = new BigDecimal("0.05");
BigDecimal result = a.multiply(b);     //结果是0.0125
2、除法divide
BigDecimal a = new BigDecimal("0.25");
BigDecimal b = new BigDecimal("0.05");
BigDecimal result = a.divide(b);     //结果是5
3、小数点保留与四舍五入setScale

除法一般都要做小数点保留几位和四舍五入的处理,用到setScale方法

BigDecimal a = new BigDecimal("0.25");
BigDecimal b = new BigDecimal("10");
BigDecimal result = a.divide(b).setScale(2, BigDecimal.ROUND_HALF_UP);     //结果是0.03
四、比较大小compareTo
BigDecimal a = new BigDecimal("0.25");
BigDecimal b = new BigDecimal("0.05");

if(a.compareTo(b) == -1){
    System.out.println("a小于b");
}
 
if(a.compareTo(b) == 0){
    System.out.println("a等于b");
}
 
if(a.compareTo(b) == 1){
    System.out.println("a大于b");    //输出结果a大于b
}
 
if(a.compareTo(b) > -1){
    System.out.println("a大于等于b");
}
 
if(a.compareTo(b) < 1){
    System.out.println("a小于等于b");
}

欢迎扫码加友,共同交流技术问题。
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值