Le code
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);
vous donnera la sortie
x=3.141593
z=3.141593
x=3.141592741012573242
z=3.141592653589793116
où sur la troisième ligne de sortie 741012573242
est garbage et sur la quatrième ligne 116
est garbage. Les doubles ont-ils toujours 16 chiffres significatifs alors que les flotteurs ont toujours 7 chiffres significatifs? Pourquoi les doubles n'ont-ils pas 14 chiffres significatifs?