gpt4 book ai didi

django - “quantize result has too many digits for current context” 保存时出错

转载 作者:行者123 更新时间:2023-12-02 20:25:47 28 4
gpt4 key购买 nike

我知道这个问题已经被问过很多次了,但不知何故没有成功。我在模型宋中有这个模型字段。

sent_score = models.DecimalField(default= 0.0,max_digits=4,decimal_places=2,blank=True)

在我看来,我通过以下方式更新发送的分数。

song_item = Song.objects.get(id=id)
com_list = Comment.objects.filter(song_id=id)
com_count = com_list.count()
pos_comments = com_list.filter(sentiment='positive')
pos_count = pos_comments.count()
getcontext().prec = 2
sent_score = Decimal(pos_count)/Decimal(com_count)

但是它仍然给我这个错误:InvalidOperation:量化结果对于当前上下文来说位数过多

我也尝试过这样的量化方法:

sc = Decimal(pos_count)/Decimal(com_count)
Decimal(sc).quantize(Decimal('12.12'), rounding = ROUND_DOWN)
song_item.sent_score = sc
song_item.save()

但它仍然给出相同的错误,请告诉我哪里出错了

最佳答案

您不应该像第一次尝试那样使用 getcontext().prec = 2,因为它会改变所有内容的精度,而不仅仅是这一次计算。

第二个示例的问题是, Decimal(sc).quantize(Decimal('12.12'), rounding=ROUND_DOWN) 甚至 sc.quantize(Decimal('12.12') '), rounding=ROUND_DOWN) 不要更改 sc。这是一个有效的示例:

sc = Decimal(pos_count)/Decimal(com_count)
sc_adjusted = sc.quantize(Decimal('12.12'), rounding=ROUND_DOWN)
song_item.sent_score = sc_adjusted
song_item.save()

关于django - “quantize result has too many digits for current context” 保存时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35812491/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com