diff --git a/Include/floatobject.h b/Include/floatobject.h
index 1d0b50a..6e36a2f 100644
--- a/Include/floatobject.h
+++ b/Include/floatobject.h
@@ -20,13 +20,32 @@
 
 #define PyFloat_Check(op) ((op)->ob_type == &PyFloat_Type)
 
-extern DL_IMPORT(PyObject *) PyFloat_FromString(PyObject*, char**);
-extern DL_IMPORT(PyObject *) PyFloat_FromDouble(double);
-extern DL_IMPORT(double) PyFloat_AsDouble(PyObject *);
+/* Return Python float from string PyObject.  Second argument ignored on
+   input, and, if non-NULL, NULL is stored into *junk (this tried to serve a
+   purpose once but can't be made to work as intended). */
+extern DL_IMPORT(PyObject *) PyFloat_FromString(PyObject*, char** junk);
 
-/* Macro, trading safety for speed */
+/* Return Python float from C double. */
+extern DL_IMPORT(PyObject *) PyFloat_FromDouble(double);
+
+/* Extract C double from Python float.  The macro version trades safety for
+   speed. */
+extern DL_IMPORT(double) PyFloat_AsDouble(PyObject *);
 #define PyFloat_AS_DOUBLE(op) (((PyFloatObject *)(op))->ob_fval)
 
+/* Write repr(v) into the char buffer argument, followed by null byte.  The
+   buffer must be "big enough"; >= 100 is very safe.
+   PyFloat_AsReprString(buf, x) strives to print enough digits so that
+   PyFloat_FromString(buf) then reproduces x exactly. */
+extern DL_IMPORT(void) PyFloat_AsReprString(char*, PyFloatObject *v);
+
+/* Write str(v) into the char buffer argument, followed by null byte.  The
+   buffer must be "big enough"; >= 100 is very safe.  Note that it's
+   unusual to be able to get back the float you started with from
+   PyFloat_AsString's result -- use PyFloat_AsReprString() if you want to
+   preserve precision across conversions. */
+extern DL_IMPORT(void) PyFloat_AsString(char*, PyFloatObject *v);
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/Lib/test/test_import.py b/Lib/test/test_import.py
index a151def..5419b5a 100644
--- a/Lib/test/test_import.py
+++ b/Lib/test/test_import.py
@@ -13,6 +13,9 @@
 else:
     raise TestFailed("import of RAnDoM should have failed (case mismatch)")
 
+# Another brief digression to test the accuracy of manifest float constants.
+import double_const  # don't blink -- that *was* the test
+
 sys.path.insert(0, os.curdir)
 
 source = TESTFN + ".py"
diff --git a/Objects/floatobject.c b/Objects/floatobject.c
index b129798..2f17d02 100644
--- a/Objects/floatobject.c
+++ b/Objects/floatobject.c
@@ -311,6 +311,12 @@
 	PyFloat_AsStringEx(buf, v, PREC_STR);
 }
 
+void
+PyFloat_AsReprString(char *buf, PyFloatObject *v)
+{
+	PyFloat_AsStringEx(buf, v, PREC_REPR);
+}
+
 /* ARGSUSED */
 static int
 float_print(PyFloatObject *v, FILE *fp, int flags)
diff --git a/Python/marshal.c b/Python/marshal.c
index 120c3fa..7cd84f6 100644
--- a/Python/marshal.c
+++ b/Python/marshal.c
@@ -149,9 +149,8 @@
 			w_short(ob->ob_digit[i], p);
 	}
 	else if (PyFloat_Check(v)) {
-		extern void PyFloat_AsString(char *, PyFloatObject *);
 		char buf[256]; /* Plenty to format any double */
-		PyFloat_AsString(buf, (PyFloatObject *)v);
+		PyFloat_AsReprString(buf, (PyFloatObject *)v);
 		n = strlen(buf);
 		w_byte(TYPE_FLOAT, p);
 		w_byte(n, p);
@@ -159,20 +158,19 @@
 	}
 #ifndef WITHOUT_COMPLEX
 	else if (PyComplex_Check(v)) {
-		extern void PyFloat_AsString(char *, PyFloatObject *);
 		char buf[256]; /* Plenty to format any double */
 		PyFloatObject *temp;
 		w_byte(TYPE_COMPLEX, p);
 		temp = (PyFloatObject*)PyFloat_FromDouble(
 			PyComplex_RealAsDouble(v));
-		PyFloat_AsString(buf, temp);
+		PyFloat_AsReprString(buf, temp);
 		Py_DECREF(temp);
 		n = strlen(buf);
 		w_byte(n, p);
 		w_string(buf, n, p);
 		temp = (PyFloatObject*)PyFloat_FromDouble(
 			PyComplex_ImagAsDouble(v));
-		PyFloat_AsString(buf, temp);
+		PyFloat_AsReprString(buf, temp);
 		Py_DECREF(temp);
 		n = strlen(buf);
 		w_byte(n, p);
