【发布时间】:2020-04-10 08:44:51
【问题描述】:
我想比较两个数字:
-3.123-3.123456
我将使用double 来存储它们,我只想考虑前 3 位小数,所以:
import java.math.RoundingMode;
import java.text.DecimalFormat;
public class DecimalComparator {
public static void main(String[] args) {
areEqualByThreeDecimalPlaces(-3.123, -3.123456);
}
public static boolean areEqualByThreeDecimalPlaces (double one, double two) {
boolean same = true;
DecimalFormat df = new DecimalFormat("#.###");
df.setRoundingMode(RoundingMode.FLOOR);
System.out.println(df.format(one));
System.out.println(df.format(two));
if (df.format(one).equals(df.format(two))) {
same = true;
System.out.println("true");
} else {
same = false;
System.out.println("false");
}
return same;
}
}
代码返回我:
-3.123
-3.124
false
为什么第二个数字四舍五入为 -3.124?
【问题讨论】:
-
Ni @Mureinik,我检查了 '.equals()' 但结果相同
-
在这里使用
==肯定是错误的,但我看到您已将您的帖子更正为使用equals,所以我重新打开了它。请参阅下面的my answer,了解您当前面临的问题。
标签: java boolean compare double decimal