Double Problem
-
Visual C++ gibt z.B. bei der Zahl 76589.463 immer Werte wie 76589.463000000003
aus. Für ein Paar meiner Funktionen also ein ziemliches Problem!
Kann man das ändern?
-
Nein, nicht wirklich - Gleitkommawerte können nicht exakt dargestellt werden, deshalb rundet der Computer sie auf den nächsten darstellbaren Wert. Ist dir die Genauigkeit der Berechnungen wirklich so wichtig, daß dieser Unterschied ins Gewicht fällt?
-
-
____ schrieb:
Visual C++ gibt z.B. bei der Zahl 76589.463 immer Werte wie 76589.463000000003
aus. Für ein Paar meiner Funktionen also ein ziemliches Problem!
Kann man das ändern?Was meinst du mit Problem? Wenn du nur 3 Nachkommastellen brauchst, dann multipliziere das ganze mit 1000 und wandle den ganzzahligen Teil in ein int oder long um. Damit lässt sich prima rechnen und vor allem vergleichen. Wenn du die Zahl dann zum darstellen wieder brauchst einfach wieder zurückkonvertieren und als float oder double darstellen.
-
____ schrieb:
Für ein Paar meiner Funktionen also ein ziemliches Problem!
Solange es nur zwei sind...
-
Wie verhält es sich denn, wenn man statt double, long double verwendet?
Vielleicht wird dann besser gerundet.
-
double und long double sind in MS VC++ genau gleich... (double)
-
Wenn wir mal ehrlich sind, ist der kleine Darstellungsfehler in den meisten Fällen doch irrelevant. Sein Problem bildet er sich wohl eher ein, als dass es wirklich besteht und die Rechnerei seines Programms in ernste Gefahr bringt. Eventuell hat er nur ein Problem bei der Ausgabe (und da kann er ja einfach auf x Stellen runden lassen).
-
_matze schrieb:
Wenn wir mal ehrlich sind, ist der kleine Darstellungsfehler in den meisten Fällen doch irrelevant. Sein Problem bildet er sich wohl eher ein, als dass es wirklich besteht und die Rechnerei seines Programms in ernste Gefahr bringt. Eventuell hat er nur ein Problem bei der Ausgabe (und da kann er ja einfach auf x Stellen runden lassen).
Genau so sehe ich das auch. Nicht das er da einen bösen Vergleich machen will?
-
@TE: wo genau liegt denn dein Problem? Was machst du denn für Berechnungen, wo diese Ungenauigkeit relevant ist?