Django中的四舍五入函数
我想在我的数值计算中把一些值进行四舍五入,比如说——
5.5 变成 5,或者 549 变成 500,599 变成 600(取最近的那个)
所以我想在 Django 中使用四舍五入或者向下取整的功能,就像在其他语言中一样。如果 Django 中有相关的函数,请推荐一些给我,并告诉我需要导入哪些库来使用这些函数。
谢谢。
4 个回答
2
2
在处理浮点数时,你可以使用 round、math.ceil 和 math.floor 这些函数。
如果你使用的是 decimal.Decimal,可以用 quantize 方法,这样你可以指定如何进行四舍五入:
value = decimal.Decimal('0.5')
value.quantize(decimal.Decimal('1'), decimal.ROUND_UP)
value.quantize(decimal.Decimal('1'), decimal.ROUND_DOWN)
value.quantize(decimal.Decimal('1'), decimal.ROUND_HALF_UP)
...
想要查看所有的四舍五入方法,可以参考 decimal.Context。
需要注意的是,Python 默认使用的是 ROUND_HALF_EVEN 这种方式,这种方式在统计学上很有用,但在财务计算中可能会让人觉得不太方便。通常情况下,处理金额到分的四舍五入可以用以下这段代码:
amount = decimal.Decimal('0.15234')
CENTI = decimal.Decimal('0.01')
value.quantize(CENTI, decimal.ROUND_HALF_UP)
0
在你的视图中使用 decimal
:
>>> import decimal
>>> numbers = ['5.5','499','1','0.5']
>>> for i in numbers:
... the_number = int(decimal.Decimal(i))
... if the_number / 10:
... the_number = the_number + 10 - (the_number % 10)
... print the_number
...
5
500
1
0
如果你想格式化浮点数,可以使用 floatformat
,这是Daniel建议的,但它不会帮你进行四舍五入。