Change float.__str__() and complex.__str__() to return
unicode objects.
diff --git a/Include/pyport.h b/Include/pyport.h
index fb57ace..92ce3ae 100644
--- a/Include/pyport.h
+++ b/Include/pyport.h
@@ -107,6 +107,7 @@
  *     PyString_FromFormat
  *     PyErr_Format
  *     PyString_FromFormatV
+ *     PyUnicode_FromFormatV
  *
  * Lower-level uses require that you interpolate the correct format modifier
  * yourself (e.g., calling printf, fprintf, sprintf, PyOS_snprintf); for
diff --git a/Objects/complexobject.c b/Objects/complexobject.c
index 0d4b755..ed2e475 100644
--- a/Objects/complexobject.c
+++ b/Objects/complexobject.c
@@ -350,7 +350,7 @@
 {
 	char buf[100];
 	complex_to_buf(buf, sizeof(buf), v, PREC_STR);
-	return PyString_FromString(buf);
+	return PyUnicode_FromString(buf);
 }
 
 static long
diff --git a/Objects/floatobject.c b/Objects/floatobject.c
index 679e93e..b996863 100644
--- a/Objects/floatobject.c
+++ b/Objects/floatobject.c
@@ -310,7 +310,7 @@
 {
 	char buf[100];
 	format_float(buf, sizeof(buf), v, PREC_STR);
-	return PyString_FromString(buf);
+	return PyUnicode_FromString(buf);
 }
 
 /* Comparison is pretty much a nightmare.  When comparing float to float,