Java学习

Java中浮点型运算的精度问题

2018-05-19  本文已影响0人  FFJ

对于浮点型运算,可能出现如下损失精度的问题:

public class Hello {
    public static void main(String[] args) {
        double d = 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1;
        System.out.println(d == 1.0);
        System.out.println(d);
    }
}

运行结果:
false
0.9999999999999999

这种情况,只能用两个数的距离在某个范围内判定它们相等来做。
如有a ,b 两个浮点数,则Math.abs(a - b ) > 0.00001(Math.abs用来求表达式的绝对值,返回值类型和表达式的数据类型一致),类似这种形式来判断。(不一定是0.00001,看具体对精度的要求)

上一篇 下一篇

猜你喜欢

热点阅读