将浮点数四舍五入至小数点后一位

3

我希望将一个数字四舍五入到小数点后一位

>>> round(1.2345, 2)
1.3
>>> round(1.261, 2)
1.3

我目前知道一个解决方案。
>>> math.ceil(1.2345 * 10) / 10
1.3

有其他方法吗?

在 Python 中,当你使用 round(1.2345, 2) 时,返回的结果是 1.23。而当你运用 round(1.261, 2) 时,则会得到 1.26 的结果。或许你希望有一个新的函数 round_up(1.2345, 1),它可以产生接近的 1.3 结果。 - jfs
我知道,实际上我想要的是1.30。 - TomNg
1个回答

3
你可以使用 decimal.ROUND_UP.quantize() 来将一个小数舍入到指定的位数:
>>> from decimal import Decimal, ROUND_UP
>>> Decimal(1.2345).quantize(Decimal(".1"), rounding=ROUND_UP)
Decimal('1.3')

您可以调整第一个参数(精度)来指定所需的数字位数:

>>> Decimal(1.2375).quantize(Decimal(".001"), rounding=ROUND_UP)
Decimal('1.238')

如果我想让数字填充一个额外的零,例如1.30,该怎么办? - TomNg
1
1.3和1.30是相等的。你不能创建一个以零结尾的浮点值,因为这是不必要的。我认为你正在尝试格式化一个浮点值。那么怎么样:print('%.2f' % 1.3) - Ozgur Vatansever
@TomNg:如果你想要给一个Decimal类型的数值添加额外的零,以表达精度:Decimal('1.3') * Decimal('1.0') - jfs

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接