zurück   Home   weiter

Was ist bei diesem float falsch?

1230.00089F

Antwort:

Es werden neun Stellen für die Genauigkeit benötigt. Der Datentyp float kann das nicht handhaben. (Der Compiler wird die Zahl in einen Wert runden, der für ein float passt.)

Genauigkeit von Double

Wir könnten einwenden, dass in der oben stehenden Zahl nur fünf Stellen verwendet werden: die Stellen, die von den Ziffern 1, 2, 3, 8, und 9 verwendet werden. Nur zählen die vier Nullen in der Mitte mit. Es braucht Bits, um sie darzustellen, selbst wenn es Nullen sind.

Der primitive Datentyp double verwendet 64 Bit und hat einen wesentlich größeren Wertebereich, -1.7E+308 to +1.7E+308. Er hat außerdem eine deutlich höhere Genauigkeit: ca. 16 signifikante Stellen.

Darum wird, wenn wir ein Literal wie 2.345 in einem Java Programm schreiben, automatisch der Datentyp double zugeordnet, auch wenn ein float ausreichen würde. Es könnte sein, dass die anderen Zahlen im Programm double sein müssen, also können wir genauso gut alle zu double machen.

Wer wissen möchte wie Gleitpunktzahlen durch Bits repräsentiert werden findet bei Wikipeda Beispiele.

Frage 12:

Haltet Ihr es für möglich, dass Zeichen wichtig genug sind, um einer von den acht primitiven Datentypen zu sein?