Heim  >  Artikel  >  Backend-Entwicklung  >  Lösung des Problems der Gleitkommaberechnung in C#

Lösung des Problems der Gleitkommaberechnung in C#

黄舟
黄舟Original
2017-09-20 11:05:182054Durchsuche

Lassen Sie mich Ihnen eine Rechenaufgabe zeigen, um Ihre Rechenfähigkeiten zu testen.

0,1 +0,1 +0,1 - 0,3 ist gleich was?

Du stellst vielleicht eine so einfache Frage: Schaust du auf mich herab? Es muss gleich 0 sein.

Es ist kein Problem, wenn Sie direkt rechnen, aber was ist, wenn Sie einen Computer verwenden?

Die Zeit, Zeuge des Wunders zu werden, ist gekommen, schauen Sie sich den Code an:


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

Laufergebnisse:

Dies liegt an der Genauigkeit des Computers, der mangelnden Präzision des internen Speichers und der Bedienung des Computers usw. Ich kann das möglicherweise nicht Erklären Sie es deutlich, aber Sie können die folgende Lösung verwenden:


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);
}

Laufergebnisse:

Dies ist das normale Betriebsergebnis.

La la la! ! ! !

Das obige ist der detaillierte Inhalt vonLösung des Problems der Gleitkommaberechnung in C#. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn