相关疑难解决方法(0)

为什么Math.round(0.49999999999999994)会返回1?

在以下程序中,您可以看到每个值略小于.5向下舍入,除了0.5.

for (int i = 10; i >= 0; i--) {
    long l = Double.doubleToLongBits(i + 0.5);
    double x;
    do {
        x = Double.longBitsToDouble(l);
        System.out.println(x + " rounded is " + Math.round(x));
        l--;
    } while (Math.round(x) > i);
}
Run Code Online (Sandbox Code Playgroud)

版画

10.5 rounded is 11
10.499999999999998 rounded is 10
9.5 rounded is 10
9.499999999999998 rounded is 9
8.5 rounded is 9
8.499999999999998 rounded is 8
7.5 rounded is 8
7.499999999999999 rounded is 7
6.5 rounded is 7 …
Run Code Online (Sandbox Code Playgroud)

java floating-point double rounding

561
推荐指数
5
解决办法
7万
查看次数

标签 统计

double ×1

floating-point ×1

java ×1

rounding ×1