如何向上舍入十进制数字

时间:2016-01-24 19:42:46

标签: python python-3.x rounding

所以我遇到麻烦四舍五入,这是我的代码:

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,但在我的情况下似乎没有做到这一点。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:2)

只需在调用ceil之前和之后移动小数点:

from math import ceil

Rfoobar = ceil(foobar * 100) / 100

如果小数位数不同,您可以执行以下操作:

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

答案 1 :(得分:2)

您还可以在舍入前添加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