Ungenauigkeit bei float
-
Hi!
Folgendes Problem:
wenn ich 2 float-Varibalen "70.000008" und "70.000000" voneinander subtrahiere, kommt eine sehr kleine Zahl heraus. Wenn ich die noch mit, sagen wir mit 8.0 multipliziere, kommt 6.1035156e-005 heraus. Ich möchte aber einen Wert von 0 haben.
Wie kann ich diese Ungenauigkeit in der 1. Zahl loswerden??Danke schonmal!
-
double benutzen
-
Einen angemessenen Datentyp verwenden.
-
Das geht nicht. floats sind nun mal nicht beliebig praezise. doubles auch nicht. Entweder Du nimmst es in Kauf oder schreibst bzw. suchst dir eine Lib die das Problem umgeht.
-
Das hat aber nichts direkt mit C++ zu tun, hat ja was mit der FPU zutun, und die ist nach IEEE normiert.
-
Ja also bei double ist genau das gleiche Problem. In kauf nehmen kann ich das nicht, weil 6.1035156e-005 nunmal ganz was anderes wie 0 ist...
Aber egal, mir wird schon was einfallen.
Also danke euch allen!
-
Lesen bildet... schau dir nochmal Antwort 2 und insbesondere 3 an.
-
Und was würdest du so als angemessenen Datentyp bezeichnen?

-
Das Problem ist doch eher: wieso sollte die Differenz zweier ungleicher Zahlen ==0 sein? Als welcher Berechnung kommt die 70.000008 ?
-
Hem, du könntest versuchen eine Library zu suchen, die Fixedpoint Typen anbietet. Kenne jetzt aber leider spontan keine.