You picked a value for the $nv which exceeds the number of digits of precision for a 64-bit float (approx 16 decimal digits). The output of MS's libc printf function is not unreasonable because it essentially gives you all 16 digits of precision correctly and then pads the rest with zeroes. It might actually be considered helpful for scientific applications because it correctly displays the digits of precision that you really have. In other words, the ``49568`` at the end of the number is not actually a stored value, it is an artifact of the base-2 encoding and gcc's printf code.