Date: Sun, 5 Sep 2004 21:56:38 +0200 From: Stefan Farfeleder <stefan@fafoe.narf.at> To: Steve Kargl <sgk@troutmask.apl.washington.edu> Cc: freebsd-standards@freebsd.org Subject: Re: is printf() broken? Message-ID: <20040905195632.GG72545@wombat.fafoe.narf.at> In-Reply-To: <20040905193640.GA37190@troutmask.apl.washington.edu> References: <20040905193640.GA37190@troutmask.apl.washington.edu>
next in thread | previous in thread | raw e-mail | index | archive | help
On Sun, Sep 05, 2004 at 12:36:40PM -0700, Steve Kargl wrote: > The following program > > #include <stdio.h> > int main(void) { > int d; > double x; > x = 1.234E05; > for (d = 0; d < 5; d++) > printf("%+-31.*e\n", d, x); > return 0; > } > > generates > > +1e+05 > +1.2e+05 > +1.23e+05 > +1.234e+05 > +1.2340e+05 > > The question is whether the first number should be > "+1.e+05". That is, is the printing of the decimal > point required or optional? I only have Harbison > and Steele's book and it does not state what the > expected behavior should be. The output is correct: e, E A double argument representing a floating-point number is converted in the style [-]d.ddd eħdd, where there is one digit (which is nonzero if the argument is nonzero) before the decimal-point character and the number of digits after it is equal to the precision; if the precision is missing, it is taken as 6; if the precision is zero and the # flag is not specified, no decimal-point character appears. The value is rounded to the appropriate number of digits. [...] Cheers, Stefan
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20040905195632.GG72545>