diff --git a/pd/src/x_interface.c b/pd/src/x_interface.c
index 84fc47876b2f9b20dfdb5b796c917aa89f5684d3..0ac6c55c2d480ed42006c31d080a93e2df3dc891 100644
--- a/pd/src/x_interface.c
+++ b/pd/src/x_interface.c
@@ -12,11 +12,19 @@
 #include <stdlib.h>
 #include <stdio.h>
 
+#if PD_FLOATSIZE == 32
+#define FLOAT_SPECIFIER "%s%s%.6g"
+#elif PD_FLOATSIZE == 64
+#define FLOAT_SPECIFIER "%s%s%.14lg"
+#endif
+
 /* we need the following for [pdinfo] ... */
 
 #define MAXNDEV 20
 #define DEVDESCSIZE 80
 
+
+
 /* -------------------------- print ------------------------------ */
 t_class *print_class;
 
@@ -86,7 +94,7 @@ static void print_pointer(t_print *x, t_gpointer *gp)
 static void print_float(t_print *x, t_floatarg f)
 {
     if (sys_nogui)
-        post("%s%s%g", x->x_sym->s_name, (*x->x_sym->s_name ? ": " : ""), f);
+        post(FLOAT_SPECIFIER, x->x_sym->s_name, (*x->x_sym->s_name ? ": " : ""), f);
     else
     {
         gui_start_vmess("gui_print", "xs", x, x->x_sym->s_name);