Double précision en C - l'impression de 50 chiffres significatifs, les rendements des valeurs inexactes

Je suis en train de faire un programme d'intégration avec des sommes de Riemann pour mon cours de Calcul. J'ai décidé d'utiliser le C pour le calcul de mes intégrales, et j'ai remarqué une énorme erreur dans mon programme qui dérive de ce problème.

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main(int argc, char** argv) {

double x = 2.0/20.0;
printf("%1.50f \n", x);


return (EXIT_SUCCESS);
}    

Le programme me donne : 0.10000000000000000555111512312578270211815834045410. Ma question: Pourquoi est-ce arrivé? Et comment puis-je résoudre ce problème? Ou au moins arrondie à ~15 décimales?

Merci pour l'aide.

Eh bien, "%1.50f" tours à 50 décimales, ce qui serait pourquoi vous voyez ces innacurate résultats de la première place...
Aussi il est recommandé de lire Ce que Tout informaticien Devez Savoir à Propos de l'Arithmétique à virgule Flottante et Chapitre 4 - l'Arithmétique du Volume 2 de Donald Knuth L'Art de la Programmation Informatique.

OriginalL'auteur user992711 | 2011-10-19