BigDecimal为什么能做到高精度计算

很多人都知道在Java高精度计算时需要使用BigDecimal,实际上,很多对数值精度敏感的领域,比如结算、财务,也确实都是使用BigDecimal这种高精度计算工具来实现的,在二进制计算机的世界了,在有限的存储介质上无法准确保存0.1,就像十进制无法准确保存1/3类似,如果研究的更理论一些,可以看一下IEEE754二进制浮点数算术标准(https://baike.sogou.com/v514046.htm?fromTitle=IEEE+754),下面我们来看一个BigDecimal支持高精度计算的示例。

示例中BigDecimal的除法将1/3的结果小数点后保留了10000位,而这是float和double无法做到的,在使用BigDecimal的时候推荐使用字符串表达式作为入参创建示例,否则会出现上面示例的情况,超过一定位数后有误差。接下来我们简单分析下java.math.BigDecimal这个类。

1.数据结构,BigDecimal内部主要使用intVal、scale、intCompact来记录数值,类图如下:

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值