A double has, if I remember correctly, about 17 significant mantissa digits. This is due to its binary representation. You have exceeded that length so the extra 000035 is truncated off. The value 'i' is 3.5 x 10^-21, which has only 2 significant digits in the mantissa, so it is OK. 3.24433466545467 os 15 digits, so only values in the next two places would be displayed (10^-15 and 10^-16). 'i' is beyond the representable range of 'j'.