|
发表于 2014-11-27 15:40:14
|
显示全部楼层
java中double的运算都要转化为bigdecimal来计算,否则容易产生精度问题。1 P( k1 }% e# c; j E
具体调整:
; [& y7 j& h* S7 L5 d; O0 ~ R/ w将:String d = String.valueOf(a* 100); 改为
8 P( L0 B" Y/ @/ RString d = String.valueOf(mul(a,100));
$ F! F/ ?# l$ W
, t8 T! `) D) S增加方法:7 s$ `. S& y& l, `4 V, Y: P
public static double mul(double d1,double d2){ 0 f( i$ k% l) ?& u3 ?* i
BigDecimal bd1 = new BigDecimal(Double.toString(d1)); . a9 m3 G, | p/ R2 T; x: B! ^+ s
BigDecimal bd2 = new BigDecimal(Double.toString(d2)); ( m) b4 ^! K$ k. S- i3 _3 a5 ?
return bd1.multiply(bd2).doubleValue();
2 f6 R" ^8 h- U+ j } |
|