|
发表于 2014-11-27 15:40:14
|
显示全部楼层
java中double的运算都要转化为bigdecimal来计算,否则容易产生精度问题。- q& ^# s7 e! r1 Y
具体调整:7 ?: s) ^1 S3 `6 F9 p1 [3 p
将:String d = String.valueOf(a* 100); 改为
g2 q y( {" A- m; ~: RString d = String.valueOf(mul(a,100));1 M; Q; J! {5 G5 o/ s% a# q' J, z
: i( n+ u: D2 Z8 ~8 d% Y
增加方法:
C5 z9 T& R$ n6 ]" A3 V) W+ k3 jpublic static double mul(double d1,double d2){ 9 [$ I3 m, Z0 z7 [% n, o9 w( C( o
BigDecimal bd1 = new BigDecimal(Double.toString(d1)); . x9 `2 C/ {3 Y$ i7 d+ w/ S x; x/ c
BigDecimal bd2 = new BigDecimal(Double.toString(d2)); ) T5 G! ?0 ?% x
return bd1.multiply(bd2).doubleValue();
4 d* {! s _. H, d! G* U1 w } |
|