Permalink
Cannot retrieve contributors at this time
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
micropython/tests/float/float_parse.py
Go to fileThis commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
36 lines (28 sloc)
1.2 KB
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# test parsing of floats | |
inf = float("inf") | |
# it shouldn't matter where the decimal point is if the exponent balances the value | |
print(float("1234") - float("0.1234e4")) | |
print(float("1.015625") - float("1015625e-6")) | |
# very large integer part with a very negative exponent should cancel out | |
print("%.4e" % float("9" * 60 + "e-60")) | |
print("%.4e" % float("9" * 60 + "e-40")) | |
# many fractional digits | |
print(float("." + "9" * 70)) | |
print(float("." + "9" * 70 + "e20")) | |
print(float("." + "9" * 70 + "e-50") == float("1e-50")) | |
# tiny fraction with large exponent | |
print(float("." + "0" * 60 + "1e10") == float("1e-51")) | |
print(float("." + "0" * 60 + "9e25") == float("9e-36")) | |
print(float("." + "0" * 60 + "9e40") == float("9e-21")) | |
# 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")) | |
# very large exponent literal | |
print(float("1e4294967301")) | |
print(float("1e-4294967301")) | |
print(float("1e18446744073709551621")) | |
print(float("1e-18446744073709551621")) | |
# check small decimals are as close to their true value as possible | |
for n in range(1, 10): | |
print(float("0.%u" % n) == n / 10) |