2009-10-27 3 views
1

Problablement une question facile mais ce calcul me dérange .. pourquoi est double test = 57.05 - 57 égal à 0.049999999999997158 et pas 0.05? Et quel type de données dois-je utiliser pour obtenir le bon résultat?Simple calcul de C# - types de données

+1

mais d'un point de vue * ingénierie *, il s'agit d'une erreur de 0,000000000005 pour cent, et devrait être assez proche. – pavium

Répondre

10

Utilisez un decimal. Et lisez this.

+1

+1 Très important de connaître la différence. – ChaosPandion

+0

Au lieu de "Très" je dirais "Vitally" – NotMe

4

Essayez de convertir .05 décimal en binaire et me dire quel résultat vous (indice: il est une valeur de répétition).

2

Réponse longue: Floating Point Representation

Réponse courte: types comme deux sont conformes à la norme IEEE 754, qui dicte les types de données qui peuvent avoir un point décimal partout (flottant). En raison de la représentation dans le binaire natif de l'ordinateur, le résultat des opérations mathématiques sur ces représentations dans de nombreux cas peut seulement être une approximation du résultat réel.

Questions connexes