我已经阅读了几篇关于使用十进制格式和舍入的文章,我认为我正确地使用了它,但不知何故 HALF_EVEN、HALF_DOWN 或 HALF_UP 舍入不起作用。
如果它与 eclipse 设置有关,或者我真的错误地使用了十进制格式,您有什么想法吗?

我的目标是像标准数学四舍五入一样将每个数字从 0.55 舍入到 0.6。所以......正如我所假设的......最好的选择是用“HALF_UP”四舍五入。

代码:

import java.math.RoundingMode;
import java.text.DecimalFormat;

public class Rounding {

    public static void main(String[] args) {
        DecimalFormat df = new DecimalFormat();
        df.setMinimumFractionDigits(1);
        df.setMaximumFractionDigits(1);
        df.setRoundingMode(RoundingMode.HALF_UP);


        for (double x = 0.55; x < 10.0; x++) {
            System.out.println("Original value: " + x + "\tRounded value: " + df.format(x));
        }
    }
}

结果:
Original value: 0.55    Rounded value: 0,6
Original value: 1.55    Rounded value: 1,6
Original value: 2.55    Rounded value: 2,5
Original value: 3.55    Rounded value: 3,5
Original value: 4.55    Rounded value: 4,5
Original value: 5.55    Rounded value: 5,5
Original value: 6.55    Rounded value: 6,5
Original value: 7.55    Rounded value: 7,5
Original value: 8.55    Rounded value: 8,6
Original value: 9.55    Rounded value: 9,6

最佳答案

一旦您拥有 double 格式的数字,您就已经创建了隐藏的不准确性,可以在您看不到它的情况下将数字四舍五入到中点以下或以上。

您需要使用 BigDecimal。

关于java - HALF_EVEN 舍入不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40061016/

10-13 04:09