Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 11 Jul 2004 11:38:17 -0700 (PDT)
From:      "Bruce R. Montague" <brucem@mail.cruzio.com>
To:        freebsd-hackers@freebsd.org
Cc:        marck@rinet.ru
Subject:   Re: gcc strangeness
Message-ID:  <200407111838.i6BIcHku000792@mail.cruzio.com>

next in thread | raw e-mail | index | archive | help

 Hi, re:

 >one of my friends has raisen very strange issue regarding gcc rounding:

 >           printf("%f %.3f %d\n", a*100, a*100, (int)(a*100));
 >
 > 9.999999 10.000 9



 Hasty unresearched guess: 

 If you print with a large fp fmt (say 22.18)
you will get a better idea of the value:

 9.999999403953552246 10.000 9
 
 
The "%.3f" says to round upward to inf after 3 decimal
places, so "9.9999" is rounded to "10.000".
 
The "%f" defaults to round up after 6 decimal places,
so "9.9999994" is rounded to ""9.999999".
 
Everything is working.
 
There are a lot of subtleties in floating-point
printf(). Printing binary values out and reading them
back accurately can be a non-trivial exercise.
 

 - bruce



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200407111838.i6BIcHku000792>