"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > La double multiplication est-elle rompue en .NET?

La double multiplication est-elle rompue en .NET?

Publié le 2025-02-06
Parcourir:797

Is Double Multiplication Broken in .NET?

Explication détaillée du problème de précision de la multiplication à double précision dans .net

En C #, le résultat de l'expression double i = 10 * 0,69; est que i se voit une valeur de 6,899999999999999999999999999999995, plutôt que le 6.9. Cela soulève la question: existe-t-il une erreur dans la multiplication à double précision dans .NET?

Représentation binaire et fonctionnement du point flottant

Pour comprendre ce comportement, vous devez avoir une compréhension approfondie des subtilités des représentations binaires et des opérations à virgule flottante. Les formats de points flottants représentent approximativement les nombres réels comme des valeurs binaires finies, ce qui peut entraîner des limitations de précision.

Le 0,69 apparemment simple ne peut pas être représenté avec précision en binaire. Il nécessite une boucle infinie de nombres binaires. La représentation binaire stockée dans le type de données double est une valeur approximative de 0,69.

Constantes Optimisées et stockées par compilateur

Dans l'extrait de code fourni, le compilateur optimise l'expression en effectuant une multiplication et en stockant le résultat en tant que constante dans l'exécutable. Il le fait parce que ces valeurs sont connues au moment de la compilation. La valeur stockée est une approximation de point flottante de 6,9, ce qui est légèrement inférieur à la valeur réelle.

Solutions et types de données alternatifs

]

pour résoudre ce problème et obtenir des résultats plus précis, le type de données décimal peut être utilisé, qui est conçu pour représenter des valeurs décimales non répétitifs avec une précision plus élevée. L'expression décimal i = 10m * 0,69m; produira un résultat de 6,9 ​​m.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3