Java ::比较ronded double不起作用

问题描述 投票:0回答:1

我想比较两个数字:

  • -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?

java boolean compare double decimal
1个回答
0
投票

RoundingMode.FLOOR将数字四舍五入-您的代码适用于正数,但不适用于负数。您需要使用RoundingMode.DOWN,它仅会删除N个位置之后的数字:

RoundingMode.DOWN
© www.soinside.com 2019 - 2024. All rights reserved.