[Bug libfortran/48651] DTOA float conversion issue
jvdelisle at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Mon Apr 18 02:49:00 GMT 2011
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48651
Jerry DeLisle <jvdelisle at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |RESOLVED
Resolution| |INVALID
--- Comment #6 from Jerry DeLisle <jvdelisle at gcc dot gnu.org> 2011-04-18 02:48:03 UTC ---
OK,
After reading the manual.
#include <stdio.h>
int
main ()
{
float num1 = 0.90;
double num2 = 0.90l;
long double num3 = 0.90L;
printf("%+-#48.*e\n", 46, num1);
printf("%+-#48.*le\n", 46, num2);
printf("%+-#48.*Le\n", 46, num3);
}
Gives:
$ ./a.out
+8.9999997615814208984375000000000000000000000000e-01
+9.0000000000000002220446049250313080847263336182e-01
+8.9999999999999999997831595655028991131985094398e-01
This is rounding to nearest which for double, just happens to be slightly above
.9 rather than slightly below. I conclude this is correct and not a bug in
either libgfortran or libc.
Its an artifact of inexact biray representation of a decimal number. Closing
this PR as invalid.
More information about the Gcc-bugs
mailing list