summaryrefslogtreecommitdiffstats
path: root/Objects/floatobject.c
diff options
context:
space:
mode:
authorEric Smith <eric@trueblade.com>2009-05-05 18:26:08 (GMT)
committerEric Smith <eric@trueblade.com>2009-05-05 18:26:08 (GMT)
commita985a3aee46dfda4b59cf20414bab199ba1b9659 (patch)
treed7c3615c46cb9a17b3c330ab78c41dd6023adf2f /Objects/floatobject.c
parent929ab934891719ea1561a623ee1b2e502b59e022 (diff)
downloadcpython-a985a3aee46dfda4b59cf20414bab199ba1b9659.zip
cpython-a985a3aee46dfda4b59cf20414bab199ba1b9659.tar.gz
cpython-a985a3aee46dfda4b59cf20414bab199ba1b9659.tar.bz2
Issue #5920: Changed format.__float__ and complex.__float__ to use a precision of 12 when using the empty presentation type. This more closely matches str()'s behavior and reduces surprises when adding alignment flags to an empty format string. Patch by Mark Dickinson.
Diffstat (limited to 'Objects/floatobject.c')
-rw-r--r--Objects/floatobject.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/Objects/floatobject.c b/Objects/floatobject.c
index 9a0dbb3..6b9a310 100644
--- a/Objects/floatobject.c
+++ b/Objects/floatobject.c
@@ -352,7 +352,7 @@ convert_to_double(PyObject **v, double *dbl)
void
PyFloat_AsString(char *buf, PyFloatObject *v)
{
- _PyOS_double_to_string(buf, 100, v->ob_fval, 's', 0,
+ _PyOS_double_to_string(buf, 100, v->ob_fval, 'g', PyFloat_STR_PRECISION,
Py_DTSF_ADD_DOT_0, NULL);
}
@@ -368,9 +368,13 @@ static int
float_print(PyFloatObject *v, FILE *fp, int flags)
{
char buf[100];
- _PyOS_double_to_string(buf, sizeof(buf), v->ob_fval,
- (flags & Py_PRINT_RAW) ? 's' : 'r',
- 0, Py_DTSF_ADD_DOT_0, NULL);
+ if (flags & Py_PRINT_RAW)
+ _PyOS_double_to_string(buf, sizeof(buf), v->ob_fval,
+ 'g', PyFloat_STR_PRECISION,
+ Py_DTSF_ADD_DOT_0, NULL);
+ else
+ _PyOS_double_to_string(buf, sizeof(buf), v->ob_fval,
+ 'r', 0, Py_DTSF_ADD_DOT_0, NULL);
Py_BEGIN_ALLOW_THREADS
fputs(buf, fp);
Py_END_ALLOW_THREADS
@@ -390,7 +394,8 @@ static PyObject *
float_str(PyFloatObject *v)
{
char buf[100];
- _PyOS_double_to_string(buf, sizeof(buf), v->ob_fval, 's', 0,
+ _PyOS_double_to_string(buf, sizeof(buf), v->ob_fval, 'g',
+ PyFloat_STR_PRECISION,
Py_DTSF_ADD_DOT_0, NULL);
return PyString_FromString(buf);
}