Issue #532631: Replace confusing fabs(x)/1e25 >= 1e25 test
with fabs(x) >= 1e50, and fix documentation.
diff --git a/Doc/library/stdtypes.rst b/Doc/library/stdtypes.rst
index f3ff505..2e54039 100644
--- a/Doc/library/stdtypes.rst
+++ b/Doc/library/stdtypes.rst
@@ -1409,7 +1409,7 @@
.. XXX Examples?
For safety reasons, floating point precisions are clipped to 50; ``%f``
-conversions for numbers whose absolute value is over 1e25 are replaced by ``%g``
+conversions for numbers whose absolute value is over 1e50 are replaced by ``%g``
conversions. [#]_ All other errors raise exceptions.
.. index::
diff --git a/Objects/stringlib/formatter.h b/Objects/stringlib/formatter.h
index 2e3e5a6..86235a6 100644
--- a/Objects/stringlib/formatter.h
+++ b/Objects/stringlib/formatter.h
@@ -789,7 +789,7 @@
if (precision < 0)
precision = 6;
- if (type == 'f' && (fabs(x) / 1e25) >= 1e25)
+ if (type == 'f' && fabs(x) >= 1e50)
type = 'g';
/* cast "type", because if we're in unicode we need to pass a
diff --git a/Objects/stringobject.c b/Objects/stringobject.c
index 8f82f4f..3b5d331 100644
--- a/Objects/stringobject.c
+++ b/Objects/stringobject.c
@@ -4344,7 +4344,7 @@
}
if (prec < 0)
prec = 6;
- if (type == 'f' && fabs(x)/1e25 >= 1e25)
+ if (type == 'f' && fabs(x) >= 1e50)
type = 'g';
/* Worst case length calc to ensure no buffer overrun:
diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c
index 107ed29..4ce9bed 100644
--- a/Objects/unicodeobject.c
+++ b/Objects/unicodeobject.c
@@ -8286,7 +8286,7 @@
return -1;
if (prec < 0)
prec = 6;
- if (type == 'f' && (fabs(x) / 1e25) >= 1e25)
+ if (type == 'f' && fabs(x) >= 1e50)
type = 'g';
/* Worst case length calc to ensure no buffer overrun: