float problem
-
hi,
ich habe das Problem, dass durch das Arbeiten mit Floats manchmal komische Werte rauskommen.
Simple Addition von 200.0000 + 123.000 ergeben dann 322.99392323. Kann ich das irgendwie unterbinden?(BITTE kommt nicht mit round. da auch teilweise mit fließkommazahlen gearbeitet wird)
:xmas1:
-
Fliesskommazahlen werden von der FPU behandelt, und die rechnet nunmal leider nicht genau. Es sind Annhärungs-/Schetzwerte. Das ist in jeder Sprache der Fall, die die FPU benutzt (auch z.B. in Java).
Wenn dir genaue Werte nach dem Komma wichtig sind, mußt du Festkommazahlen (Fixpoints) benutzen.
-
kannste nicht doubles anstatt floats nehmen?
-
Bei double ist das leider auch der fall, oder sollte das hier nicht der fall sein?
-
floats & doubles kann man nicht nehmen wenn man genaue Werte braucht, also 1.0 oder 1.5 oder sowas. eine mögliche abhilfe sind manchmal fixkomma zahlen.
-
Naja, es muss ja alternativen zu double oder floats geben!! besonders unter c++.

:xmas1:
-
Was willst Du denn machen?
-
Ja, long zum Beispiel.
-
Ja, entweder du nimmst dir int oder long. Das sind die Alternativen. Denn letztendlich sind Fixpoints nur Zahlen, wo du selbst die Kommastelle bestimmst. Ein Komma ist ja nur eine Darstellung die nicht das Rechnen beeinflusst. Wenn du es z.B. in einer Textkonsole ausgibst, wird nur in dem Moment das Komma zwischengeschaltet.
Es gibt auch Fixpoint-Libs. Oder du baust dir mit Klassen und Operator-Überladung deine eignene Fixpoints.
-
Dein Problem ist eher trivial.
Aus exp(phi(lim->0)) folgt: int(exp(k^2-Amd-oder-Intel),x=1..Ö), womit die Natur deiner Fließkommazahlen begründet wäre.