我想在像-------
这样的视图中为我的数值计算舍入一些值5.5到5 或549 t0 500和599 - 600(最近的一个)
所以我想在django中使用舍入OR floor函数,就像我们在其他语言中使用的那样。在django中是否有与此相关的函数,请建议我一些函数以及我必须导入以使用这些函数的库。
感谢。
答案 0 :(得分:2)
答案 1 :(得分: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)
答案 2 :(得分: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
如果要格式化浮点数,请按照Daniel的建议使用floatformat
,但不会为您进行舍入。
答案 3 :(得分:0)
如果您在ORM中执行此操作,则可以使用Func()
表达式,请参阅this answer。