Hey Leute,
wir sollen momentan in der Schule einen Taschnrechner in BlueJ, was mit Java 1.42 läuft (die Lehrer sind zu faul 1.6 zu installieren ) programmieren.
Dabei habe ich einen interessanten Fehler. Und zwar bekommt der Taschenrechner bei der Rechnung 1,3 - 0,3 0,9999994(Anzahl 9 nicht genau bekannt, sitze gerade zu Hause, waren aber so zwischen 5 und 8 Neunen, denke ich) raus. Nun frage ich mich woran das liegt. Man gibt erst die eine Zahl per Buttons ein(also man hat eine Oberfläche wie bei einem normalem Taschenrechner, drückt dann auf die Minustaste, worauf die erste Zahl als Float in einer Variablen gespeichert wird, dann gibt man die zweite Zahl ein und drückt auf die Gleichtaste. Daraufhin wird dann die zweite Zahl auch in einer Variablen als Float gespeichert. Anschließend werden die Zahlen subtrahiert und das Ergebnis von Float in String umgewandelt, damit es auf dem Display angezeigt werden kann. Das Ergebnis ist dann, wie schon gesagt 0,9999994 und nicht 1.
Ich weiß, dass der Fehler nicht auftritt, wenn man anstatt von Float Double benutzt, aber mich würde schon interessieren, wo der Fehler liegt.
Die Lehrer wollen, bzw können, mir nicht sagen, wo das Problem liegt.
wir sollen momentan in der Schule einen Taschnrechner in BlueJ, was mit Java 1.42 läuft (die Lehrer sind zu faul 1.6 zu installieren ) programmieren.
Dabei habe ich einen interessanten Fehler. Und zwar bekommt der Taschenrechner bei der Rechnung 1,3 - 0,3 0,9999994(Anzahl 9 nicht genau bekannt, sitze gerade zu Hause, waren aber so zwischen 5 und 8 Neunen, denke ich) raus. Nun frage ich mich woran das liegt. Man gibt erst die eine Zahl per Buttons ein(also man hat eine Oberfläche wie bei einem normalem Taschenrechner, drückt dann auf die Minustaste, worauf die erste Zahl als Float in einer Variablen gespeichert wird, dann gibt man die zweite Zahl ein und drückt auf die Gleichtaste. Daraufhin wird dann die zweite Zahl auch in einer Variablen als Float gespeichert. Anschließend werden die Zahlen subtrahiert und das Ergebnis von Float in String umgewandelt, damit es auf dem Display angezeigt werden kann. Das Ergebnis ist dann, wie schon gesagt 0,9999994 und nicht 1.
Ich weiß, dass der Fehler nicht auftritt, wenn man anstatt von Float Double benutzt, aber mich würde schon interessieren, wo der Fehler liegt.
Die Lehrer wollen, bzw können, mir nicht sagen, wo das Problem liegt.
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Darkfire ()