diff options
| author | Damien George | 2018-02-08 14:02:50 +1100 |
|---|---|---|
| committer | Damien George | 2018-02-08 14:02:50 +1100 |
| commit | b75cb8392bdf5f8c12072eac3adbdaad53d1e8d2 (patch) | |
| tree | 4e02e3f9b22d6496677c97366d981778619556b9 /tests/float/float_parse_doubleprec.py | |
| parent | 0c650d427601d5c84bd623d58abc9be5451c576c (diff) | |
py/parsenum: Fix parsing of floats that are close to subnormal.
Prior to this patch, a float literal that was close to subnormal would
have a loss of precision when parsed. The worst case was something like
float('10000000000000000000e-326') which returned 0.0.
Diffstat (limited to 'tests/float/float_parse_doubleprec.py')
| -rw-r--r-- | tests/float/float_parse_doubleprec.py | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/tests/float/float_parse_doubleprec.py b/tests/float/float_parse_doubleprec.py index 356601130..2ea7842f3 100644 --- a/tests/float/float_parse_doubleprec.py +++ b/tests/float/float_parse_doubleprec.py @@ -14,3 +14,8 @@ print(float('.' + '9' * 400 + 'e-100')) print(float('.' + '0' * 400 + '9e100')) print(float('.' + '0' * 400 + '9e200')) print(float('.' + '0' * 400 + '9e400')) + +# ensure that accuracy is retained when value is close to a subnormal +print(float('1.00000000000000000000e-307')) +print(float('10.0000000000000000000e-308')) +print(float('100.000000000000000000e-309')) |
