1 | | I reviewed that pull request and after some testing I came to the conclusion, that `math.isclose` with a tolerance of `1e-9` is the best solution to fix the floating point rounding errors. All other approaches did not work properly or were far too complicated. |
| 1 | If someone wants to use the `step` attribute as provided by the HTML field |
| 2 | `<input type="number" ...>` , she/he has to specify that using for instance |
| 3 | `FloatField(widget=NumberInput(attrs={'step': 0.5}))`. |
| 4 | |
| 5 | Since the HTML standard offers a `step` attribute on input fields of `type="number"`, |
| 6 | this feature shall be reflected by Django's `FloatField` and optionally `DecimalField`, |
| 7 | rather than having to parametrize the widget. |
| 8 | |
| 9 | Min- and max-values are already supported by the `FloatField`, so the step-value |
| 10 | would make sense here as well. It furthermore would require to revalidate the |
| 11 | step-value by Django's Form validation, rather than by HTML alone. |
| 12 | |
| 13 | Patch: https://github.com/django/django/pull/14162 |