相关疑难解决方法(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万
查看次数

round()for C++中的float

我需要一个简单的浮点舍入函数,因此:

double round(double);

round(0.1) = 0
round(-0.1) = 0
round(-0.9) = -1
Run Code Online (Sandbox Code Playgroud)

我能找到ceil()floor()在math.h中-但不是round().

它是以另一个名称存在于标准C++库中,还是缺少?

c++ floating-point rounding

227
推荐指数
11
解决办法
36万
查看次数

舍入到最接近的整数

我一直试图围绕长浮点数,如:

32.268907563;
32.268907563;
31.2396694215;
33.6206896552;
...
Run Code Online (Sandbox Code Playgroud)

到目前为止没有成功.我试过了math.ceil(x),math.floor(x)(虽然那会向上或向下舍入,这不是我正在寻找的)并且round(x)哪些都不起作用(仍然是浮点数).

我能做什么?

编辑:代码:

for i in widthRange:
    for j in heightRange:
        r, g, b = rgb_im.getpixel((i, j))
        h, s, v = colorsys.rgb_to_hsv(r/255.0, g/255.0, b/255.0)
        h = h * 360
        int(round(h))
        print(h)
Run Code Online (Sandbox Code Playgroud)

python

194
推荐指数
7
解决办法
34万
查看次数

标签 统计

floating-point ×2

rounding ×2

c++ ×1

double ×1

java ×1

python ×1