|
发表于 2014-11-27 15:40:14
|
显示全部楼层
java中double的运算都要转化为bigdecimal来计算,否则容易产生精度问题。. Z6 t# N6 `3 o8 E0 k+ G& ?
具体调整:: @, f! R6 i5 m. A5 \* L6 q
将:String d = String.valueOf(a* 100); 改为
7 t# R& X& r& ^$ R, Q7 n, FString d = String.valueOf(mul(a,100));7 k" e4 _0 l; i" R2 ] s
8 r* R1 f4 Z! f, p增加方法:8 |6 d5 Z# Z1 }& O. D6 U2 }; L
public static double mul(double d1,double d2){ $ j" Z4 x$ E3 U9 D
BigDecimal bd1 = new BigDecimal(Double.toString(d1));
4 F7 p9 F4 l" o# i) T! o BigDecimal bd2 = new BigDecimal(Double.toString(d2)); ; f" D& B* D3 a" O
return bd1.multiply(bd2).doubleValue();
& s" N, j4 |5 v1 a _ } |
|