Heim > Backend-Entwicklung > C++ > Warum ist 10 * 0,69 in C# nicht genau 6,9?

Warum ist 10 * 0,69 in C# nicht genau 6,9?

DDD
Freigeben: 2025-01-10 08:48:41
Original
835 Leute haben es durchsucht

Why is 10 * 0.69 not exactly 6.9 in C#?

Gleitkomma-Präzisionsprobleme bei der C#-Multiplikation

Sehen wir uns den C#-Codeausschnitt an:

<code class="language-csharp">double i = 10 * 0.69;</code>
Nach dem Login kopieren

Während Sie erwarten würden, dass i 6,9 entspricht, beträgt die tatsächliche Ausgabe oft 6,8999999999999995. Diese Diskrepanz ergibt sich aus den inhärenten Einschränkungen der Gleitkomma-Arithmetik innerhalb des .NET-Frameworks.

Gleitkommazahlen werden im Gegensatz zu Dezimalzahlen in binären Formaten dargestellt. Diese binäre Darstellung bedeutet, dass bestimmte Dezimalwerte, einschließlich solcher mit sich unendlich wiederholenden Dezimalteilen wie 0,69, nicht perfekt ausgedrückt werden können. Stattdessen handelt es sich um Näherungswerte.

Der Compiler ist sich dieser Einschränkung bewusst und optimiert die Berechnung häufig, indem er eine enge Näherung von 6,9 direkt speichert, anstatt 10 * 0.69 zur Laufzeit zu berechnen. Diese Näherung erklärt den beobachteten leichten Unterschied.

Um eine höhere Genauigkeit zu erreichen, insbesondere bei Finanzanwendungen, sollten Sie die Verwendung des Datentyps decimal in Betracht ziehen. decimal verwendet eine Basis-10-Darstellung, die eine präzisere Darstellung von Dezimalzahlen wie 0,69 ermöglicht und so die Rundungsfehler minimiert, die mit der binären Gleitkomma-Arithmetik verbunden sind.

Das obige ist der detaillierte Inhalt vonWarum ist 10 * 0,69 in C# nicht genau 6,9?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage