踩坑:double乘法失去精度,double保留小数问题
程序员文章站
2022-03-18 19:46:57
...
计算百分比
情景:首先相除,然后×100 ;
double保留小数
/**
* 小数点后保留四位位小数
*/
String result = String.format("%.4f",(dividend / total)) ;
double r = Double.valueOf(result) ;
double乘法计算失去精度
//接上面的代码
double result = r * 100 ;
这是double可能会丢失精度,比如
0.3060 -> 30.59999999····
我的解决方案
//第一种 也可能丢失精度
double result = r*10*10 ;
//第二种 直接先x100 然后保留两位小数
String result = String.format("%.2f",(dividend*100 / total)) ;
double乘法运算
BigDecimal b = new BigDecimal(String.valueOf(0.14));
BigDecimal c = new BigDecimal(String.valueOf(100));
System.out.println(b.multiply(c));
System.out.println(b.multiply(c).intValue());
System.out.println(b.multiply(c).doubleValue());
下一篇: JS面向对象用法实例