问题:一个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类型转换时有着不可预知性,也会导致精度丢失。
本文介绍如何使用BigDecimal解决Java中double类型数值运算时的精度丢失问题,通过实例演示了将double字符串转换为BigDecimal,进行精确乘法运算,并讨论了BigDecimal构造函数的正确用法。


1459

被折叠的 条评论
为什么被折叠?



