数字String类型 转换精度问题

本文介绍如何使用BigDecimal解决Java中double类型数值运算时的精度丢失问题,通过实例演示了将double字符串转换为BigDecimal,进行精确乘法运算,并讨论了BigDecimal构造函数的正确用法。

问题:一个double数字的字符串,我乘以100后,使用String.valueOf会丢失精度。

解决:百度后,像这种double类型精度问题,使用BigDecimal对象处理是最理想的。

String s = "2.112";
BigDecimal temp = BigDecimal.valueOf(Double.valueOf(s));
// 将temp乘以100
temp = temp.multiply(BigDecimal.valueOf(100));
double sum = temp.doubleValue();
System.out.println(sum);
参考链接:https://blog.csdn.net/sinat_35717984/article/details/81144981

注意:BigDecimal temp = BigDecimal.valueOf(Double.valueOf(s));

该句中BigDecimal对象的获取,传入的参数为String时,可以new一个对象返回。(BigDecimal temp = new BigDecimal(s))

但是如果传入的参数是double时,只能使用BigDecimal.valueOf(double),因为double类型转换时有着不可预知性,也会导致精度丢失。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值