如何始终向上舍入小数位
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
所以我 运行 遇到四舍五入问题,这是我的代码:
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