Frage von McEiche13, 34

Unterschied vom Int-Wert und Float-Wert?

Entschuldigt die Frage da sie mir eigentlich schon oft beantowrtet wurde aber.... Wieso kann der Float Wert keine Dezimalzahlen verarbeiten obwohl der Int-Wert genau gleich groß ist und diese verabeiten kann.

Vielen Dank schonmal

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von martin0815100, 23

Das sind völlig unterschiedliche Datentypen. Bei den meisten Programmiersprachen muss man umwandeln je nachdem was man braucht.

Wenn Du in Java beispielsweise den Datentyp durch die Zuweisung besteimmen lässt, dann legen die beiden Zuweisungen unterschiedliche Datentypen an:

var a = 1;
var b = 1.0;

Das ist nicht identisch! Vereinfacht ausgedrückt, einmal mit Nachkommastellen einmal ohne.

Antwort
von Schilduin, 19

Du meinst es wahrscheinlich anders herum, denn der Float Wert kann sie verarbeiten, der int Wert nicht. Das hängt mit der Art zusammen, wie die Zahl im Speicher geschrieben wird. Der int Wert speichert nur ganze Zahlen ab, wobei eine Ziffer für das Vorzeichen steht, und der Rest einfach für die Zahl in binärer Schreibweise. Float Werte werden nach dem schema 2^x*1,f abgespeichert, ein bit für das Vorzeichen, 8 bit für den Exponenten x und der Rest für die Nachkommastellen f. Ist also ähnlich wie die Schreibweise, die man aus den Naturwissenschaften kennt, nur eben in binär. Entsprechend hat die Zahl nur begrenzte Genauigkeit, bei großen Exponenten kann die Zahl nicht einmal auf die Einerstelle genau angegeben werden. Mit int lassen sich im Gegensatz dazu viel größere Zahlen noch genau angeben.

Antwort
von dan030, 15

Eigentlich ist es umgekehrt: float hat einen größeren Wertebereich und kann auch Nachkommastellen darstellen.

Allerdings gibt es speziell bei float das Problem, dass die Präzision sehr niedrig ist. Intern werden Fließkommazahlen ja als Tupel aus Exponent und Mantisse dargestellt. Und beim Datentyp float ist die Mantisse sehr kurz bemessen.

Das führt zu der erstmal absurd erscheinenden Situation, dass z. B. ein long int Werte darstellen kann, die nicht in einem float abbildbar sind. Weil sie nämlich dann in float "gerundet" werden müssen wegen der zu kurzen Mantisse.

Deswegen verwendet man statt float typischerweise auch den Datentyp double oder, wenn noch mehr Präzision gebraucht wird, long double. Da ist dann die Mantisse länger.

Antwort
von ZetShock, 19

Ich glaube dass für INT werte im Programm weniger speicher reserviert wird, während für Float variablen mehr Arbeitsspeicher reserviert ist. Ich denke dass der Sinn von dem allen ist, zwei Möglichkeiten zu haben, bei der man entweder reservierten Speicher sparen kann, oder eben Dezimalzahlen verwenden kann.

Kommentar von Schilduin ,

Sind in beiden Fällen 32 bit wenn ich mich nicht irre, nur sind int Variablen immer auf die Einerziffer genau, während bei großen Float Werten diese Genauigkeit verloren geht.

Antwort
von RakonDark, 11

Float Werte ist ein ganz eigenes System der Zahlendarstellung und kann sehr ungenau werden. Float ist nicht gleich Dezimal. Im Speicher werden die Nachkommastellen in einer Art Berechnung ausgewiesen. Einige Zahlen können gar nicht in Float dargestellt werden weil es eben nicht einfach die Nachkommastellen in einzelnen Zahlen sind .

Antwort
von Max2020, 16

Andersrum: Der Float kann, der Int nicht. Das ist reine Konventionssache: Beim Int wurde festgelegt, dass er keine Kommazahlen darstellt, also wird intern auch kein Speicher für diese Informationen bereitgestellt. Beim Float wird diese Informationen in Form von Exponenten mit angehängt. Dadurch können Kommazahlen dargestellt werden, aber es ist auch (in der Regel) mehr Speicher notwendig für den gleichen Zahlenbereich wie Int.

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten