https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110145
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jsm28 at gcc dot gnu.org --- Comment #4 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Actually, even simple double a = 1e126; int main () { __builtin_printf ("%.13a\n", a); } behaves differently in C between -m64 and -m32 -fexcess-precision=standard. -m64 gives 0x1.7a2ecc414a03fp+418 while -m32 -fexcess-precision=standard gives 0x1.7a2ecc414a040p+418 Now, 1e126L is 0xb.d176620a501fc0000000000000p+415, which is that 0x1.7a2ecc414a03fp+418 exactly. So wonder why we try to round that up.