如何始终向上舍入小数位

How to round decimal digits always up

所以我 运行 遇到四舍五入问题,这是我的代码:

foo = float(0.21)
bar = float(0.871929)

foobar = foo * bar
Rfoobar = round(foobar,2)

这给了我:

foobar = 0.1831
Rfoobar = 0.18

但我希望 Rfoobar 成为 0.19, 我如何实现它总是在有余数时四舍五入?

我读到了 math.ceiling,但就我而言,这似乎没有用。

非常感谢任何帮助。

调用前后移动小数点即可ceil:

from math import ceil

Rfoobar = ceil(foobar * 100) / 100

如果小数位数不同,您可以这样做:

Rfoobar = ceil(foobar * 10 ** digits) / 10 ** digits

您还可以在四舍五入前加上 0.005:

>>> for foobar in 0.1831, 0.1801, 0.1800:
        print(foobar, '->', round(foobar + 0.005, 2))

0.1831 -> 0.19
0.1801 -> 0.19
0.18 -> 0.18