gpt4 book ai didi

django 十进制形式字段的值不等于 max_value

转载 作者:行者123 更新时间:2023-12-01 23:50:41 26 4
gpt4 key购买 nike

我的表单中有一个 DecimalField,我想限制 min_value=0.1max_value=99.99

purity_percent = forms.DecimalField(max_value=99.99, min_value=0.1, decimal_places=2)

但是当我尝试输入等于 0.199.99 的值时,我将无法工作,我收到这些错误

对于 0.1 :确保此值大于或等于 0.1。

对于 99.99:确保此值小于或等于 99.99。

如何将那些也包含在限制中?

最佳答案

float ,如 99.99,以二进制形式存储。许多可以用有限十进制数字表示的数字都是二进制的重复分数(请参阅许多其他问题)。

特别是,文字 99.99 更接近于:

>>> "{:.15f}".format(99.99)
'99.989999999999995'

Python 也有小数:

>>> from decimal import Decimal
>>> d = Decimal("99.99")

果然,十进制数 99.99 大于 float max_value 99.99:

>>> d <= 99.99
False

Django 开发人员了解二进制,这就是 DecimalField 存在的全部原因:它存储小数。

结论:使用 Decimal("99.99") 作为您的最大值,而不是 float 。

关于django 十进制形式字段的值不等于 max_value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26728826/

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