使用BigDecimal字符转换的精度丢失问题


 

BigDecimal.valueOf(Double.parseDouble("3.141592121212121212");

BigDecimal.valueOf("3.141592121212121212");

谁会有精度丢失?

BigDecimal.valueOf(Double.parseDouble("3.141592121212121212")) 这种方式会有精度丢失,而 BigDecimal.valueOf("3.141592121212121212") 这种方式不会有精度丢失。

原因是,Double.parseDouble() 方法将字符串 "3.141592121212121212" 解析为 double 类型的值时,由于 double 类型的精度是有限的,会导致精度损失。

相比之下,直接使用 BigDecimal.valueOf("3.141592121212121212") 方法将字符串 "3.141592121212121212" 转换为 BigDecimal 对象,不会有精度丢失。BigDecimal 类提供了高精度的数值表示和计算,可以保持字符串所表示的精确数值。

总结:如果你需要保持精确度,特别是对于长小数位数或需要高精度计算的情况,建议使用BigDecimal.valueOf() 的方式来处理。这样可以避免 double 类型的精度限制。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值