[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [bug-gawk] pretty-print rounds to "%.6g"
From: |
Aharon Robbins |
Subject: |
Re: [bug-gawk] pretty-print rounds to "%.6g" |
Date: |
Fri, 04 Sep 2015 14:39:19 +0300 |
User-agent: |
Heirloom mailx 12.5 6/20/10 |
Hi.
> To: "address@hidden" <address@hidden>
> From: Hermann Peifer <address@hidden>
> Date: Thu, 3 Sep 2015 18:44:57 +0200
> Subject: [bug-gawk] pretty-print rounds to "%.6g"
>
> Hi,
>
> I just came across the below rounding issue in pretty-printed code. Not
> sure if this is a feature or rather a (small) bug.
>
> Hermann
>
> $ awk -o/dev/stdout 'BEGIN{ for(i=1420066800; i<=1451602800; i+=3600)
> print i}'
> BEGIN {
> for (i = 1.42007e+09; i <= 1.4516e+09; i += 3600) {
> print i
> }
> }
It's more a bug than a feature. Patch attached and already pushed
to the repo.
Thanks for the report.
Arnold
--------------------------------------------
diff --git a/ChangeLog b/ChangeLog
index e685dd6..209c07f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2015-09-04 Arnold D. Robbins <address@hidden>
+
+ * profile.c (pp_num): Use format_val to print integral values
+ as integers. Thanks to Hermann Peifer for the report.
+
2015-08-25 Arnold D. Robbins <address@hidden>
* node.c (str2wstr): Upon finding an invalid character, if
diff --git a/profile.c b/profile.c
index 74fc4f9..5af7b92 100644
--- a/profile.c
+++ b/profile.c
@@ -1343,9 +1343,19 @@ pp_number(NODE *n)
} else
#endif
{
- count = PP_PRECISION + 10;
- emalloc(str, char *, count, "pp_number");
- sprintf(str, "%0.*g", PP_PRECISION, n->numbr);
+ /* Use format_val() to get integral values printed as integers
*/
+ NODE *s;
+
+ getnode(s);
+ *s = *n;
+ s->flags &= ~STRCUR;
+
+ s = r_format_val("%.6g", 0, s);
+
+ s->stptr[s->stlen] = '\0';
+ str = s->stptr;
+
+ freenode(s);
}
return str;
diff --git a/test/ChangeLog b/test/ChangeLog
index 7b9e273..2de6750 100644
--- a/test/ChangeLog
+++ b/test/ChangeLog
@@ -1,3 +1,7 @@
+2015-09-04 Arnold D. Robbins <address@hidden>
+
+ * profile.ok: Updated after code change.
+
2015-08-25 Arnold D. Robbins <address@hidden>
* mbstr1.ok: Updated after code change.
diff --git a/test/profile5.ok b/test/profile5.ok
index bff767e..2bae16b 100644
--- a/test/profile5.ok
+++ b/test/profile5.ok
@@ -2872,7 +2872,7 @@
_MACPFX84SFX["\204"] = "_macpfx84"
_MACPFX84SFX["\224"] = "_macsfx94"
_MACPFX84SFX[""] = "_mpusfxsubret"
- _VLDMAXSTRING = 1e+06
+ _VLDMAXSTRING = 1000000
}
function _macpfx84(F, D, C, p1, p2, p3)