Unlike decimal floats, correctly rounding hex floats is easy and cheap, so we should do it. Moreover the standard requires it.
With -Wall GCC complains that the following function is missing a return statement because it has incorrectly folded the comparison to false. int foo(void) { if (0x1.0000010000000000000000000000000000000001p0f != 1) return 1; } Remove one of the long line of zeroes and the precision falls within GCC's limits and it works. -- Summary: GCC incorrectly rounds hex floats Product: gcc Version: 4.1.0 Status: UNCONFIRMED Severity: minor Priority: P3 Component: c AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: neil at gcc dot gnu dot org CC: gcc-bugs at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21720