Hi,
Ich rätsle grad an einem Rechnugsfehler rum
var angle= 7.26;
var deg = parseInt(angle);
deg ist also jetzt 7.
var min = parseInt( (angle-deg)*100 );
Ergibt theoretisch (7.26-7)*100 = 26.
Aber da gebrochene Zahlen, die im Zehnersystem ganz harmlos aussehen, als Bruch in der Binärschreibweise (so funktioniert die Fließkommadarstellung üblicherweise) oft nicht exakt dargestellt werden können, ergeben sich solche Rundungsfehler.
Ich kriege für min immer 25, erwarten würde ich 26! Und zwar weil (angle-deg) 0.2599999999999998 ergibt.
Zum Beispiel, ja.
gibt es eine Lösung? Klar kann ich runden
Genau das ist die Lösung.
aber wieso muss ich etwas runden, was eigentlich präzis war?
Weil das, was für unsere Augen präzise ist, im Binärsystem eben *nicht* präzise ist.
Ciao,
Martin
--
Die letzten Worte des Hardware-Bastlers:
Das Netzkabel lass ich wegen der Erdung lieber dran.
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(