Entwickler-Ecke
Basistechnologien - Falsches Berechnungsresultat aus Doublewerten
mats74 - Di 13.09.16 07:59
Titel: Falsches Berechnungsresultat aus Doublewerten
Hallo zusammen
Ich habe ein unerwartetes Resultat aus folgender Berechnung erhalten:
C#-Quelltext
1:
| MessageBox.Show(Convert.ToString(8.53 - 7.53)); |
oder
C#-Quelltext
1:
| MessageBox.Show(Convert.ToString(Convert.ToDouble(8.53) - Convert.ToDouble(7.53))); |
Das Resultat beider Berechnungen ergibt auf meinem Rechner eine Gleitkommazahl von 0.99999...
Weitere Zahlenwerte ergeben ein mathematisch korrektes Resultat ( z.B. 8.53 - 7.55 = 0.98 oder 9.53 - 8.53 = 1 ).
Gibt es für diesen Umstand eine plausible Erklärung und wie kann ich diesen "Fehler" am Besten bereinigen?
Danke für eure Hilfe.
mats74 - Di 13.09.16 08:40
Hallo jaenicke
Vielen Dank für Deine Antwort.
Sie ist die Lösung meines Problems.
Ich werde gemäss Deinem Ansatz die Nachkommastellen bei entsprechenden Typenkonvertierungen berücksichtigen.
Palladin007 - Di 13.09.16 08:43
Schau dir auch mal den Typ
decimal [
https://msdn.microsoft.com/de-de/library/364x0z75.aspx] an.
Der stellt auch eine Fließkommazahl dar, aber mit erhöhter Genauigkeit.
Es können aber nicht so hohe Werte dargestellt werden, wie bei
double, da mehr Platz für die Nachkommastellen gebraucht wird.
Ansonsten kannst Du auch die Nachkommastellen vor der Berechnung heraus rechnen und später wieder dazu rechnen.
Dadurch wird während der Berechnung der Wert zwar größer, aber
double kann verdammt hohe Werte fassen ^^
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!