Gleitkomma Arithmetik
-
Hi,
ich verwenden folgende Funktion um Funktionswerte zu berechnen.
Allerding wenn ich jetzt als Parameter z.b. (-20,20,0.1) übergebe,
zählt er nicht sauber hoch, sprich -19.9 , -19.8 usw., sondern -19.8999999999 , -19.80000000001 usw.Kennt jemand eine Moglichkeit das er die Laufvariable i "mahtematich korrekt" hochzählt?
std::vector<punkt> funktion::werte(double von, double bis, double step) { std::vector<punkt>W; for (double i = von; i <= bis; i += step) { W.push_back(punkt(i, at(i))); } return W; }
-
0.1 ist binär nicht exakt darstellbar. Versuche es mal mit 0.125, oder besser noch: nur integrale Typen für Laufvariablen verwenden.
-
Runden
Festkommaarithmetik bzw.
GanzzahlenKeinen step sondern amount (Anzahl der Zwischenschritte angeben)
Rechne den neuen Wert per Multiplikation aus, so vermeidest du Folgefehler.