Use %.17f to format floats/doubles
diff --git a/Modules/cPickle.c b/Modules/cPickle.c
index db72bf9..9af979b 100644
--- a/Modules/cPickle.c
+++ b/Modules/cPickle.c
@@ -922,7 +922,7 @@
     {
         char c_str[250];
         c_str[0] = FLOAT;
-        sprintf(c_str + 1, "%f\n", x);
+        sprintf(c_str + 1, "%.17g\n", x);
 
         if ((*self->write_func)(self, c_str, strlen(c_str)) < 0)
             return -1;