在进行商业运算时解决BigDecimal的精度丢失问题
System.out.println(0.05+0.01);
System.out.println(1.0-0.42);
System.out.println(4.015*100);
System.out.println(123.3/100);
在運行這段代碼時就會發現一些列的問題,java并不像其他語言那樣對貨幣的運算有特殊的處理,一切只能靠自己造輪子了
public static BigDecimal add(double v1,double v2) {
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.add(b2);
}
public static BigDecimal sub(double v1,double v2) {
BigDecimal b1 = new BigDecimal(Double.toString(v2));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.subtract(b2);
}
public static BigDecimal mul(double v1,double v2) {
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.multiply(b2);
}
public static BigDecimal div(double v1,double v2) {
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.divide(b2);
}
轉載于:https://www.cnblogs.com/chenligeng/p/9952818.html
總結
以上是生活随笔為你收集整理的在进行商业运算时解决BigDecimal的精度丢失问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: tomcat的webapps下没有出现配
- 下一篇: 学了编译原理能否用 Java 写一个编译