Opened 7 years ago
Closed 7 years ago
#28562 closed Bug (fixed)
DecimalValidator raises ValidationError for decimals in scientific notation
Reported by: | Maksim Iakovlev | Owned by: | Josh Schneier |
---|---|---|---|
Component: | Core (Other) | Version: | dev |
Severity: | Normal | Keywords: | |
Cc: | Tim Martin | Triage Stage: | Ready for checkin |
Has patch: | yes | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
>>> validator = DecimalValidator(20, 2) >>> value = Decimal('7.42403889818E+17') >>> try: ... validator(value) ... except Exception as e: ... print(e) ... [u'Ensure that there are no more than 2 decimal places.'] >>> value = Decimal(742403889818000000) >>> try: ... validator(value) ... except Exception as e: ... print(e) ... >>>
Change History (7)
comment:1 by , 7 years ago
Component: | Uncategorized → Core (Other) |
---|---|
Triage Stage: | Unreviewed → Accepted |
Type: | Uncategorized → Bug |
Version: | 1.11 → master |
comment:2 by , 7 years ago
Has patch: | set |
---|---|
Owner: | changed from | to
Status: | new → assigned |
comment:3 by , 7 years ago
Cc: | added |
---|---|
Triage Stage: | Accepted → Ready for checkin |
comment:6 by , 7 years ago
Resolution: | fixed |
---|---|
Status: | closed → new |
Running version Django==2.0.1
With Example form
class UpdateBalanceForm(forms.Form): balance = forms.DecimalField(decimal_places=2, max_digits=16, required=True)
Running the following you get
form = UpdateBalanceForm({'balance':Decimal('5.420575188741E-12')}) form.is_valid() False form.errors {'balance': ['Ensure that there are no more than 16 digits in total.']}
This is surprising because the value has 13 digits minus the scientific notation
edit 1: Simplified example
comment:7 by , 7 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
Please open a new ticket as the fix for this ticket has been released.
Note:
See TracTickets
for help on using tickets.
PR