我正在计算视图文件中的一个字段
data_dict = { 'quantity_order': float(bom.quantity) * float(quantity)}我添加了浮点转换,因为我遇到了另一个问题:
“不能用‘Decimal’型非整数乘序列‘”
在模型中,这两个字段都定义为十进制。
quantity_order = models.DecimalField(max_digits=19, decimal_places=3)其中一个字段通过url正则表达式接收。
url(r'^production/order/new/(?P<pk_bom>\d+)/(?P<pk_soproduct>\d+)/(?P<uri>\S+)/(?P<quantity>\d+(\.\d{1,3}))/$',views.Production_order_new, name="production_order_new"),所以问题是有时候计算是不正确的。例如,如果两个数量值都是44,则计算正确,但当一个值为44 * 666时,结果将是443556.000。
在乘法导致此错误之前,可以是要浮动的转换值吗?
发布于 2016-07-16 14:58:47
“不能用‘Decimal’型非整数乘序列‘”
这实际上意味着,一个操作数是序列,另一个操作数是十进制。Ie,bom.quantity或quantity之一是序列,而不是整数、浮点数或十进制。
data_dict = { 'quantity_order': float(bom.quantity) * float(quantity)}一个序列可以用一个int来表示。
seq = [1,2,3]
seq * 2 # produces [1,2,3,1,2,3]但
seq * 2.5 # produces can't multiply sequence by non-int of type 'float'发布于 2016-07-16 03:02:55
你为什么要把它转换成浮子?十进制就够了。结果仍然是一样的,即使你不转换它。
如果您确实出于某种原因想要转换它,那么请使用以下方法:
data_dict = { 'quantity_order': float(bom.quantity * quantity)}但这不会改变小数位数。
https://stackoverflow.com/questions/38406833
复制相似问题