Il codice
float x = 3.141592653589793238;
double z = 3.141592653589793238;
printf("x=%f\n", x);
printf("z=%f\n", z);
printf("x=%20.18f\n", x);
printf("z=%20.18f\n", z);
ti darà l'output
x=3.141593
z=3.141593
x=3.141592741012573242
z=3.141592653589793116
dove sulla terza riga di output 741012573242è immondizia e sulla quarta riga 116è immondizia. I doppi hanno sempre 16 cifre significative mentre i float hanno sempre 7 cifre significative? Perché i doppi non hanno 14 cifre significative?