【发布时间】:2014-08-15 08:53:00
【问题描述】:
我想减去 2 个双精度数并将结果转换为整数。
d = 1.41384;
d1 = 1.4133;
d2 = (d-d1); /// 0.0005399999999
int i = (int) ( d2 /0.00001); // 53
int i1 = (int) Math.ceil(( d2 /0.00001)); //54
Double 不能表示所有值,因此减法可能会导致错误值,如上例所示。减法的值是否也会比预期的略大? (例如 0.00540000000001) Math.ceil 在这种情况下给了我正确的答案,但是有没有更优雅的方法来解决这个问题?
【问题讨论】:
-
问题发生在之前减法...
-
将
Math.ceil替换为Math.round,使其适用于所有情况。