我有一堆花车,我想把它们整理到10的下一个最高倍数.
例如:
10.2 should be 20
10.0 should be 10
16.7 should be 20
94.9 should be 100
Run Code Online (Sandbox Code Playgroud)
我只需要它从0-100的范围.我尝试了math.ceil(),但只能舍入到最接近的整数.
提前致谢.
Tam*_*más 12
from math import ceil
def ceil_to_tens(x):
return int(ceil(x / 10.0)) * 10
Run Code Online (Sandbox Code Playgroud)
编辑:好的,既然我对这个答案有一个不应得的"好答案"徽章,我认为社区有一个适当的解决方案,使用decimal不受这些问题困扰的模块:)感谢Jeff指出这一点.因此,使用decimal如下工作的解决方案:
from decimal import Decimal, ROUND_UP
def ceil_to_tens_decimal(x):
return (Decimal(x) / 10).quantize(1, rounding=ROUND_UP) * 10
Run Code Online (Sandbox Code Playgroud)
当然上面的代码需要x是一个整数,一个字符串或一个Decimal对象 - 浮点数不会起作用,因为这会破坏使用decimal模块的整个目的.
遗憾的是,Decimal.quantize对于大于1的数字,它不能正常工作,它会保存除法 - 乘法技巧.