善解人衣 发表于 2014-11-27 15:14:02

字符类型转换精度问题

本帖最后由 善解人衣 于 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
为什么,哪里转换出了问题。

javazx 发表于 2014-11-27 15:40:14

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();
    }

java初学 发表于 2015-4-15 15:49:11

不错的 涨姿势了啊呵呵 :lol

java初学 发表于 2015-4-15 15:49:49

就喜欢学这样比较细微的知识的

我爱java 发表于 2015-4-15 15:51:17

我这里精度转换也老是出问题的啊啊没得办法啊

linuvzg 发表于 2022-7-8 13:47:27

感谢楼主
页: [1]
查看完整版本: 字符类型转换精度问题