recent bug in printf ?

From: Enache Adrian <enache_at_rdslink.ro>
Date: Sun, 20 Apr 2003 00:00:17 +0300
$ gcc -x c - && ./a.out
#include <stdio.h>

int main()
{
   printf("%.*g\n",8,0.00009);
}
^D
9.0000000e-05

It appears that all others printf implementations will print '9e-05' there.
It's at least what perl expects ( for its Gconvert() macro - and badly
fails a lot of tests because of this ).

The sprintf(3) man page claims:

     gG      The double argument is converted in style f or e (or F or E for G
             conversions).  The precision specifies the number of significant
             digits.  If the precision is missing, 6 digits are given; if the
             precision is zero, it is treated as 1.  Style e is used if the
             exponent from its conversion is less than -4 or greater than or
             equal to the precision.  Trailing zeros are removed from the
             fractional part of the result; a decimal point appears only if it
             is followed by at least one digit.

Should I understand that the zeros in 9.0000000e-05 aren't trailing -
because the exponent follows them ?

I use -CURRENT cvsup'ed 4-5 days ago.

Regards
Adi
Received on Sat Apr 19 2003 - 12:00:29 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:37:04 UTC