字符类型转换精度问题
本帖最后由 善解人衣 于 2014-11-27 15:17 编辑如下
public static void main(String[] args) {
double a= Double.parseDouble("19.9");
String d = String.valueOf(a* 100);
Double dd = Double.parseDouble(d);
int i=dd.intValue();
System.out.println(i);
}
结果是:1989
为什么,哪里转换出了问题。
java中double的运算都要转化为bigdecimal来计算,否则容易产生精度问题。
具体调整:
将:String d = String.valueOf(a* 100);改为
String d = String.valueOf(mul(a,100));
增加方法:
public static double mul(double d1,double d2){
BigDecimal bd1 = new BigDecimal(Double.toString(d1));
BigDecimal bd2 = new BigDecimal(Double.toString(d2));
return bd1.multiply(bd2).doubleValue();
} 不错的 涨姿势了啊呵呵 :lol 就喜欢学这样比较细微的知识的 我这里精度转换也老是出问题的啊啊没得办法啊 感谢楼主
页:
[1]