Tim Peters <t...@python.org> added the comment:
Python delegates exponentiation with a Python float result to the platform C's double precision `pow()` function. So this is just what the Windows C pow(2.0, -1075.0) returns. All native floating point operations are subject various kinds of error, and this is one. >>> import math >>> math.pow(2.0, -1075.0) 5e-324 >>> math.pow(2.0, -1074.0) # same thing 5e-324 To avoid intermediate libm rounding errors, use ldexp instead: >>> math.ldexp(1, -1074) # 2.0 ** -1074 5e-324 >>> math.ldexp(1, -1075) # 2.0 ** -1075 0.0 ---------- nosy: +tim.peters _______________________________________ Python tracker <rep...@bugs.python.org> <https://bugs.python.org/issue37787> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com