我想比较两个数字:
-3.123
-3.123456
我将使用double
来存储它们,而我只想考虑前三位小数,所以:
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?
RoundingMode.FLOOR
将数字四舍五入-您的代码适用于正数,但不适用于负数。您需要使用RoundingMode.DOWN
,它仅会删除N个位置之后的数字:
RoundingMode.DOWN