Maison >développement back-end >Tutoriel C#.Net >Résoudre le problème du calcul de virgule flottante en C#

Résoudre le problème du calcul de virgule flottante en C#

黄舟
黄舟original
2017-09-20 11:05:182106parcourir

Laissez-moi vous montrer un problème de calcul pour tester vos capacités arithmétiques.

0,1 +0,1 +0,1 - 0,3 est égal à quoi ?

Vous pouvez poser une question si simple : me méprisez-vous ? Il doit être égal à 0.

Il n'y a pas de problème si vous calculez directement, mais que se passe-t-il si vous utilisez un ordinateur ?

Le moment d'assister au miracle est arrivé, regardez le code :


void Main()
{    var f = 0.1 +0.1 +0.1 -0.3;
    Console.WriteLine("f=={0}",f);
}

Résultats en cours :

Cela est dû à la précision de l'ordinateur, au manque de précision dans le stockage interne et le fonctionnement de l'ordinateur, etc. Je ne pourrai peut-être pas expliquez-le clairement, mais vous pouvez utiliser la solution suivante :


void Main()
{    //var f = 0.1 +0.1 +0.1 -0.3;    //Console.WriteLine("f=={0}",f);
    
    var f1 = new Decimal(0.1) + new Decimal(0.1) + new Decimal(0.1) - new Decimal(0.3);
    Console.WriteLine("f1 == {0}",f1);
}

Résultats en cours d'exécution :

C'est le résultat du fonctionnement normal.

La la la ! ! ! !

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!

Déclaration:
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