Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Dort kannst du schauen, wozu deine Werte passen.
So wie du es geschrieben hast, ist es nicht ganz richtig.
Vielleicht liest du dir auch mal den Artikel durch.
Kommazahlen:
float oder double
Floats haben eine Genauigkeit von etwa 7 Dezimalstellen, Doubles eine von 14 Stellen.
Ganzzahlen:
byte (8Bit) => 2^8=256 verschiedene Zahlen darstellbar, da das Byte in Java vorzeichenbehaftet ist kannst du also Zahlen von -128 bis +127 darstellen
short (16Bit) => 2^16=65536 verschiedene Zahlen => -32768 bis +32767
int (32Bit) => 2^32 = ~4mrd => +-2 mrd
long (64Bit) => 2^64 = ~18 trillionen => +-9 trillionen
char ist wie short, allerdings ohne Vorzeichen => 0 bis 65536
Fällt alles unter die Kategorie nice-to-know. Was man meistens braucht und was ausreicht ist long, int und String. Boolean nicht zu vergessen, haha!
Wenn es mal kniffelig wird brauchst du die anderen primitiven Datentypen. Versuche dich mal mit der simplen Standartausgabe in Java und spiel mit den Werten der Datentypen rum.
510.33 bis 10012.61: double passt auf jeden Fall, aber im Grunde könnte man auch Argumentieren, dass hier float reicht, da zumindest die Grenzen bereits mit einem float dargestellt werden können.
0.987543219: sind zu viele stellen für float, muss also auch double sein
Ein int geht nur bis etwa +2mrd, daher braucht man für 3243231231 bereits long
Demzufolge:
510.33 bis 10012.61 float
0.987543219 bis 1 double
1 bis 100 byte/char/short
-10 bis 3243231231 long
k bis z char/String
Wie ich eingangs schon schrieb, kommt es aber weiter auf den Anwendungsfall an. Soll das Rechnersystem später um Randwerte erweitert werden, zum Bleistift -1 bei 1 bis 100, oder nicht??? Raketenabstürze gab es in der Vergangenheit!!! Dabei geht dann viel Image, Material und Menschen verloren (nach Wichtigkeit nicht unbedingt in dieser Reihenfolge). Auch wäre es schlecht, wenn dein Prozessor in der CPU falsch rechnen würde...
Wie es auch sei, du kommst nicht drum rum, DICH intensiv mit der Anwendung auseinanderzusetzen.
Alles klar, ich danke Euch vielmals! Ich werde mich auf jeden Fall weiter in diese Thematik stuerzen! Hoert sich wahrscheinlich alles erstmal sehr kompliziert an... ;-)
Ist das Thema denn gelöst? Die korrekte Berechnung zu zeigen - ohne bloßes Draufschauen - ist gar nicht so leicht. Möchte diese jemand hier machen? Es müsste ja gezeigt werden: float < 0.987543219 bis 1 < double. Wer möchte das tun?
Es geht hier aber nicht um den Wertebereich ! Du hast doch oben selber den Link zur IEEE 754 gepostet. Demnach kannst du bei float nur 7-8 Dezimalstellen darstellen, also nicht den Wert 0.987543219 ! Und das hat nichts damit zu tun ob der Compiler das Literal akzeptiert. Das tut er ja. Aber es kann in float nicht dargestellt werden ! Wenn du hier float verwendest würde die Rakete auf jeden Fall abstürzen.
Hierfür brauchst du keine Induktion.
float hat nach IEEE 754 einen 8 Bit Exponenten und eine 23 Bit Mantisse.
Wenn man nun also per Hand 0.987543219 in eine Gleitkommazahl umwandelt, stellt man fest, dass die Mantisse mehr als 23 Bit haben wird => float reicht nicht
Wenn sich der Nachkommateil bei n verfügbaren Stellen nicht als eine Summe der Kehrwerte der ersten n Zweierpotenzen darstellen lässt, wird es eben ungenau. Bei float natürlich ungenauer als bei double.
Edit: Was ich damit eigentlich sagen wollte: ob ein Wert als float oder double absolut präzise darstellbar ist, hängt nicht von der Anzahl der dezimalen Nachkommastellen ab, sondern davon, ob er binär "gut passt".
Die Rakete stürzte wegen eines Integer Over- oder Underflows ab, weil der Wertebereich, wahrscheinlich 16 Bit war. Das lässt sich nicht ganz übertragen - außer, ein Wertebereich ist zu klein oder zu groß. Vorzeichenwechsel auch noch mal ein Thema. Jetzt mal ungeachtet dessen ist Gleitkommazahlenarithmetik "ungenau". "Ungenau" ist auch nicht richtig gewählt. Was ich sagen wollte, nur selten ist Rechnen mit rationalen/irrationalen Dezimalzahlen "genau das Richtige"...