Heute machte ich meine Universität Programmierung Übungen und kam zu dieser seltsamen Sache. Ich würde gerne wissen, ob mir irgendjemand erklären könnte, was hier vor sich geht.Wirklich seltsame Interaktion mit Zahlen
Das ist das, was ich es zu zeigen, codiert:
program problema;
var
a : real;
b : real;
begin
a := 1 - 0.8 - 0.2;
b := 1 - 0.2 - 0.8;
write(a);
writeln(b);
end.
Während ich es erwartet 0 in beiden Fällen zurück, es -1,3 tatsächlich gibt ... auf dem ersten und 0 auf dem zweiten . Wie kann das möglich sein?
Mögliche Duplikate von [Ist Fließkomma-Mathematik gebrochen?] (Http://stackoverflow.com/questions/588004/is-floating-point-math-broken) – JJJ
Beachten Sie, dass es nicht -1,3 ... aber -1,3 ist ... E-020, das ist -0.000 ... 13 (mit 20 Nullen). – JJJ
Es bewertet -5.55111512313e-17 in PHP und auf meinem Fedora Desktop-Rechner. Es ist also ein weites Symptom der Computermathematik, nicht nur Pascal. :) Sehen Sie diesen für Referenz auf das genaue Problem: http://matlab.wikia.com/wiki/FAQ#Why_is_0.3_-_0.2_-_0.1_.28or_similar.29_not_equal_to_zero.3F – SomeDude