Ce que je pensais être un ajout trivial dans le code C standard compilé par GCC m'a quelque peu troublé. Si j'ai un double appelé A et aussi un double appelé B, et A = une exponentielle très petite disons 1e-20 et B est une valeur plus grande par exemple 1e-5 - pourquoi mon double C qui est égal à la somme A + B prend la valeur dominante B? J'espérais que lorsque je spécifiais imprimer à 25 décimales j'obtiendrais 1.00000000000000100000e-5. Au lieu de cela, je n'ai que 1.00000000000000000000e-5. Dois-je utiliser long double ou autre chose?C: Ajout d'exponentielles
Très confus, et une question facile pour la plupart de répondre, je suis sûr! Merci pour toute orientation à l'avance.
"Dois-je utiliser long double ou autre chose?" Est-ce que tu l'as essayé? – Nocturno
'1e-5 + 1e-20 => 1.0000000000000011e-5' Si vous imprimez suffisamment de place, vous devriez obtenir la différence. –
Les deux chiffres pertinents dans la différence sont espacés de 15, ce qui est proche de la fin de la gamme qu'un «double» peut exprimer. Notez que cela n'a aucun sens d'imprimer plus de 17 chiffres décimaux. –