diff options
author | Damien George <damien.p.george@gmail.com> | 2018-02-08 14:02:50 +1100 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2018-02-08 14:02:50 +1100 |
commit | b75cb8392bdf5f8c12072eac3adbdaad53d1e8d2 (patch) | |
tree | 4e02e3f9b22d6496677c97366d981778619556b9 /tests/float/float_parse.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.py')
-rw-r--r-- | tests/float/float_parse.py | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/tests/float/float_parse.py b/tests/float/float_parse.py index 448eff3bc..de4ea455f 100644 --- a/tests/float/float_parse.py +++ b/tests/float/float_parse.py @@ -20,3 +20,8 @@ print(float('.' + '9' * 70 + 'e-50') == float('1e-50')) print(float('.' + '0' * 60 + '1e10') == float('1e-51')) print(float('.' + '0' * 60 + '9e25')) print(float('.' + '0' * 60 + '9e40')) + +# ensure that accuracy is retained when value is close to a subnormal +print(float('1.00000000000000000000e-37')) +print(float('10.0000000000000000000e-38')) +print(float('100.000000000000000000e-39')) |