首页 > 解决方案 > JAVA:两个浮点数的差异

问题描述

double double1 = 0.174;
double double2 = 0.175;
double diff = Math.abs(double1 - double2);

diff返回0.0010000000000000009

现在我输入:

double double1 = 3.174;
double double2 = 3.175;
double diff = Math.abs(double1 - double2);

我期望diff返回相同的结果,但它返回9.999999999998899E-4. 这种行为有原因吗?

标签: javafloating-point

解决方案


可以使用 BigDecimal

        BigDecimal decimal1=BigDecimal.valueOf(1.744);
        BigDecimal decimal2=BigDecimal.valueOf(1.745);
        BigDecimal result=decimal2.subtract(decimal1);
        double diff=Math.abs(result.doubleValue());

推荐阅读