Omit `-' in F format if value rounds to zero.
authorBen Pfaff <blp@gnu.org>
Wed, 18 May 2005 01:30:55 +0000 (01:30 +0000)
committerBen Pfaff <blp@gnu.org>
Wed, 18 May 2005 01:30:55 +0000 (01:30 +0000)
src/ChangeLog
src/data-out.c
tests/expressions/randist/cauchy.out

index c7c31594fa2c97037116e9137209a555eadb3568..3836660d9528052adf0e282098e7be9a8215e4b2 100644 (file)
@@ -1,3 +1,8 @@
+Tue May 17 18:29:35 2005  Ben Pfaff  <blp@gnu.org>
+
+       * data-out.c: (format_and_round) Don't output leading `-' if value
+       rounds to zero.
+
 Tue May 17 00:06:43 2005  Ben Pfaff  <blp@gnu.org>
 
        Fix PR 11119.
index d21d2902e1e5fcfe383b0872c1dabed27ef75c88..ae322bce59953ddc9ebbf69a6a1be4f813e8e8ce 100644 (file)
@@ -1116,6 +1116,7 @@ format_and_round (char *dst, double number, const struct fmt_spec *fp,
 
   sprintf (buf, "%.*f", decimals, number);
 
+  /* Omit integer part if it's 0. */
   if (!memcmp (buf, "0.", 2))
     memmove (buf, buf + 1, strlen (buf));
   else if (!memcmp (buf, "-0.", 3))
@@ -1215,6 +1216,10 @@ format_and_round (char *dst, double number, const struct fmt_spec *fp,
         }
     }
 
+  /* Omit `-' if value output is zero. */
+  if (buf[0] == '-' && buf[strspn (buf, "-.0")] == '\0')
+    memmove (buf, buf + 1, strlen (buf));
+
   buf_copy_str_lpad (dst, fp->w, buf);
   return 1;
 }
index 0cd1feef78605a91c4b781db2a3338842a914454..dab2757e02cf2a73c98f89bb2a3fad9338adae70 100644 (file)
      .50    -1.00     1.00    -1.00      .50      .32 
      .50    -1.00     1.25    -1.00      .50      .25 
      .50    -1.00     1.50    -1.00      .50      .21 
-     .50      .00      .50     -.00      .50      .64 
-     .50      .00      .75     -.00      .50      .42 
-     .50      .00     1.00     -.00      .50      .32 
-     .50      .00     1.25     -.00      .50      .25 
-     .50      .00     1.50     -.00      .50      .21 
+     .50      .00      .50      .00      .50      .64 
+     .50      .00      .75      .00      .50      .42 
+     .50      .00     1.00      .00      .50      .32 
+     .50      .00     1.25      .00      .50      .25 
+     .50      .00     1.50      .00      .50      .21 
      .50     1.00      .50     1.00      .50      .64 
      .50     1.00      .75     1.00      .50      .42 
      .50     1.00     1.00     1.00      .50      .32