vai*_*ain 3 django django-forms
我的表单中有一个 DecimalField,我想限制min_value=0.1和max_value=99.99
purity_percent = forms.DecimalField(max_value=99.99, min_value=0.1, decimal_places=2)
Run Code Online (Sandbox Code Playgroud)
但是当我尝试输入等于0.1或99.99我将无法工作的值时,我会收到这些错误
For 0.1 : Ensure this value is greater than or equal to 0.1.
For 99.99 : Ensure this value is less than or equal to 99.99.
我该如何将这些也包含在限制中?
浮点数,如99.99,以二进制形式存储。许多可以用有限十进制数字表示的数字都是二进制的重复分数(请参阅许多其他问题)。
特别是,字面意思99.99更接近于:
>>> "{:.15f}".format(99.99)
'99.989999999999995'
Run Code Online (Sandbox Code Playgroud)
Python 也有小数:
>>> from decimal import Decimal
>>> d = Decimal("99.99")
Run Code Online (Sandbox Code Playgroud)
果然,Decimal 99.99 大于 float max_value 99.99:
>>> d <= 99.99
False
Run Code Online (Sandbox Code Playgroud)
Django 开发人员了解二进制,这就是 Django 存在的全部原因DecimalField:它存储小数。
结论:用作Decimal("99.99")max_value,而不是浮点数。
| 归档时间: |
|
| 查看次数: |
1095 次 |
| 最近记录: |