double in C is defined after the IEEE standard for floating point numbers. It will be, on a machine capable of binary64 representation (read: every machine), represented as an 11-bit exponent and 52-bit integer mantissa. That means there need be no integer precision loss until you pass the 2^52-1 mark.