美文网首页
浮点数之间的等值判断

浮点数之间的等值判断

作者: anjian8000 | 来源:发表于2020-03-11 18:01 被阅读0次

    当看阿里规范文档时候,发现一段话挺有意思【浮点数之间的等值判断,基本数据类型不能用==来比较,包装数据类型不能用equals 来判断】

    // 举一个例子说明一下这个问题
    public static void main(String[] args) {

    // 错误方法    

    float a = 1.0f - 0.9f;

    float b = 0.9f - 0.8f;

    // 我们的期望值是true,但是实际返回的却是false

    System.out.println("result:" + (a==b));

    // 正确方法    使用BigDecimal判断

    BigDecimal aa = new BigDecimal("1.0");

    BigDecimal bb = new BigDecimal("0.9");

    BigDecimal cc = new BigDecimal("0.8");

    BigDecimal x = aa.subtract(bb);

    BigDecimal y = bb.subtract(cc);

    if (x.equals(y)) {

          System.out.println("result:true");

    }

    }

    有一篇文章也挺好的,转发一下:

    https://www.jianshu.com/p/4679618fd28c

    相关文章

      网友评论

          本文标题:浮点数之间的等值判断

          本文链接:https://www.haomeiwen.com/subject/vqjhjhtx.html