英文:
JAVA: Difference in Two Floats
问题
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。
这种行为有原因吗?
英文:
double double1 = 0.174;
double double2 = 0.175;
double diff = Math.abs(double1 - double2);
diff returns 0.0010000000000000009
Now I type:
double double1 = 3.174;
double double2 = 3.175;
double diff = Math.abs(double1 - double2);
I am expecting diff to return the same result, but it returns 9.999999999998899E-4.
Is there a reason for this behaviour?
答案1
得分: 0
可以使用BigDecimal
BigDecimal decimal1 = BigDecimal.valueOf(1.744);
BigDecimal decimal2 = BigDecimal.valueOf(1.745);
BigDecimal result = decimal2.subtract(decimal1);
double diff = Math.abs(result.doubleValue());
英文:
can use BigDecimal
BigDecimal decimal1=BigDecimal.valueOf(1.744);
BigDecimal decimal2=BigDecimal.valueOf(1.745);
BigDecimal result=decimal2.subtract(decimal1);
double diff=Math.abs(result.doubleValue());
专注分享java语言的经验与见解,让所有开发者获益!

评论