Maison > développement back-end > C++ > La double multiplication est-elle interrompue dans .NET ?

La double multiplication est-elle interrompue dans .NET ?

Patricia Arquette
Libérer: 2025-01-10 09:52:41
original
741 Les gens l'ont consulté

Is Double Multiplication Broken in .NET?

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

En C#, le résultat de l'expression double i = 10 * 0.69; est que i se voit attribuer la valeur 6,899999999999999995 au lieu de la valeur attendue 6,9. Cela soulève la question : y a-t-il un problème avec la multiplication double précision dans .NET ?

Représentation binaire et opérations en virgule flottante

Pour comprendre ce comportement, il faut avoir une compréhension approfondie des subtilités de la représentation binaire et de l'arithmétique à virgule flottante. Les formats à virgule flottante représentent approximativement les nombres réels sous forme de valeurs binaires finies, ce qui peut entraîner des limitations de précision.

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

Optimisation du compilateur et constantes stockées

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

Solutions de contournement et types de données alternatifs

Pour résoudre ce problème et obtenir des résultats plus précis, vous pouvez utiliser le type de données decimal, conçu pour représenter des valeurs décimales non répétitives avec une plus grande précision. L'expression decimal i = 10m * 0.69m; rapportera 6,9 millions.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal