2016-01-24 2 views
0

Так я столкнулся с проблемой округление поплавки вверх, это мой код:Как округлять десятичные цифры всегда

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, но в моем случае это не похоже на трюк.

всякая помощь очень ценится.

+4

Умножьте на 100, потолок, разделите на 100. –

+0

@Tom Zych Вы должны положить это в ответ, потому что это полностью то, что я сделал бы, если бы не ваш комментарий. ;-) –

+2

Вы прочитали [как завершить плавающее число в python_] (http://stackoverflow.com/questions/4518641/how-to-round-off-a-floating-number-in-python) ? – martineau

ответ

2

Просто переместите десятичную точку до и после вызова ceil:

from math import ceil 

Rfoobar = ceil(foobar * 100)/100 

Если количество знаков после запятой меняется, вы можете сделать что-то вроде:

Rfoobar = ceil(foobar * 10 ** digits)/10 ** digits 
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 
Смежные вопросы