https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120691
--- Comment #6 from Marc Adams <madams846 at hotmail dot com> --- Another case is 8861 divided by 10000: #include <stdio.h> #include <fenv.h> int main() { fesetround( FE_UPWARD ); _Decimal128 x1 = 8861, x2 = 10000 ; printf(" x1/x2 %f \n", (double)( x1 / x2 ) ); return 0 ; } On my system this code prints 8.861 when result should be 0.8861 .