summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/float/float_format.py8
-rw-r--r--tests/float/float_format_ints_doubleprec.py3
-rw-r--r--tests/float/string_format_modulo.py5
3 files changed, 15 insertions, 1 deletions
diff --git a/tests/float/float_format.py b/tests/float/float_format.py
index 4c8a21756..98ed0eb09 100644
--- a/tests/float/float_format.py
+++ b/tests/float/float_format.py
@@ -17,3 +17,11 @@ print("%.2e" % float("9" * 40 + "e-21"))
# check a case that would render negative digit values, eg ")" characters
# the string is converted back to a float to check for no illegal characters
float("%.23e" % 1e-80)
+
+# Check a problem with malformed "e" format numbers on the edge of 1.0e-X.
+for r in range(38):
+ s = "%.12e" % float("1e-" + str(r))
+ # It may format as 1e-r, or 9.999...e-(r+1), both are OK.
+ # But formatting as 0.999...e-r is NOT ok.
+ if s[0] == "0":
+ print("FAIL:", s)
diff --git a/tests/float/float_format_ints_doubleprec.py b/tests/float/float_format_ints_doubleprec.py
index 57899d6d6..67101d3e4 100644
--- a/tests/float/float_format_ints_doubleprec.py
+++ b/tests/float/float_format_ints_doubleprec.py
@@ -13,3 +13,6 @@ v1 = 0x54B249AD2594C37D # 1e100
v2 = 0x6974E718D7D7625A # 1e200
print("{:.12e}".format(array.array("d", v1.to_bytes(8, sys.byteorder))[0]))
print("{:.12e}".format(array.array("d", v2.to_bytes(8, sys.byteorder))[0]))
+
+for i in range(300):
+ print(float("1e" + str(i)))
diff --git a/tests/float/string_format_modulo.py b/tests/float/string_format_modulo.py
index 094461538..3c206b739 100644
--- a/tests/float/string_format_modulo.py
+++ b/tests/float/string_format_modulo.py
@@ -41,7 +41,10 @@ print(("%.40f" % 1e-300)[:2])
print(("%.40g" % 1e-1)[:2])
print(("%.40g" % 1e-2)[:2])
print(("%.40g" % 1e-3)[:2])
-print(("%.40g" % 1e-4)[:2])
+# Under Appveyor Release builds, 1e-4 was being formatted as 9.99999...e-5
+# instead of 0.0001. (Interestingly, it formatted correctly for the Debug
+# build). Avoid the edge case.
+print(("%.40g" % 1.1e-4)[:2])
print("%.0g" % 1) # 0 precision 'g'