zoukankan      html  css  js  c++  java
  • 关于在Android或Java中精度缺失的解决方法

    left,right是两个String类型的字符串,myres是一个double类型的变量。

    如果我们用下面的语句把left,right先转换为double后直接加法的话,如果作3.3乘3之类的运算(被乘数是奇数会出问题),会变成9.8888888889,而不是我们想要的9.9,这就是精度缺失。

    myres=Double.valueOf(left)+Double.valueOf(right);

     

    解决方法:

    double lt=Double.parseDouble(left);
    double rt=Double.parseDouble(right);
    BigDecimal b1 = new BigDecimal(Double.toString(lt));
    BigDecimal b2 = new BigDecimal(Double.toString(rt));

    加法

    myres=b1.add(b2).doubleValue();

    return myres;

    减法

    myres=b1.subtract(b2).doubleValue();

    return myres;

    乘法

    myres=b1.multiply(b2).doubleValue();

    return myres;

    除法

    myres=b1.divide(b2).doubleValue();

    return myres;

    返回的myres是正确的结果,这个也可以应用于Android开发过程中。

  • 相关阅读:
    variables _ golang
    values _ golang
    hello world _ golang
    golang
    英语
    ubuntu下安装node、node代码调试
    xampp日常需求
    垂直居中方法总结
    angularJS之ui-router插件(1)
    Sass学习
  • 原文地址:https://www.cnblogs.com/HangZhe/p/5717313.html
Copyright © 2011-2022 走看看