Datentypen Wertebereich float/double - Warum nicht hoch -1

knowledge

Bekanntes Mitglied
Hallo,

bei den meisten Datentypen ist ja der Wertebereich von -2 hoch n bis 2 hoch n-1, da die 0 mit eingerechnet wird.

Bei float und double ist es jedoch +- 3,40 ... *10 hoch 38 bzw. +- 1,79 ... * 10 hoch 308. Wieso wird hier nicht auch 10 hoch 38-1 bzw. 10 hoch 308-1 gerechnet wie bei den anderen Typen...
 

rme

Top Contributor
Ja, aber die Mantisse und der Exponent werden getrennt gespeichert. Wenn du eine genaue Angabe willst: bei foat z.B. von 2^-23 * 2^-126 bis (1-2^-24) * 2^128. Mit so einer Angabe kann niemand etwas anfangen, deshalb wandelt man es in abgeschätzte Dezimaldarstellungen um: von ca. 1.4 * 10^-45 bis ca. 3,4*10^38

Dazwischen sind aber ganz viele Zahlen nicht genau darstellenbar, sowas simples wie 0.4 zum Beispiel schon nicht.
 
Zuletzt bearbeitet:

knowledge

Bekanntes Mitglied
Danke für die schnelle Antwort. 0.4 nicht darstellbar? Da versteh ich dein Beispiel sicher falsch, weil

float a = 0.4f; kann ich ja Deklarieren/Initialisieren. Kannst du noch einmal kurz - am Bsp. - skizieren warum das nicht geht. Steh immernoch auf dem Schlauch. Danke.
 

rme

Top Contributor
Du kennst sicherlich die Darstellung von ganzen Zahlen: Man hat die Zweierpotenzen 1, 2, 4, 8, 16, 32, 64 usw. zur Verfügung und summiert diese, um eine Zahl darzustellen. Beispielsweise ist 19 = 16 + 2 + 1.

Bei Dezimalzahlen hat man nun binäre Brüche: 1/2, 1/4, 1/8, 1/16, 1/32, 1/64 usw.

0.4 entspricht nun dem Bruch 2 / 5. Wenn wir 1/2 nähmen, wäre das zu viel, also ist das erste Bit eine Null. 1/4 ist kleiner, also nehmen wir die - das zweite Bit ist eine 1 und es verbleiben noch 3/20. Wenn man das jetzt so weitermacht, kommt man nie zum Ende - es handelt sich um einen periodischen Bruch. Sowas wie 7/6 im Dezimalsystem, das ist auch nicht darstellbar und wird deshalb lieber als Bruch geschrieben. Das machen floats aber nicht so, sonst könnte man ja nur rationale, aber keine reellen Zahlen darstellen. Deshalb darf man floats auch nicht mit == vergleichen. Es gibt da sehr viele, schöne Beispiele, in denen das kaputtgeht, weil als gleich empfundene Zahlen intern anders berechnet wurden, die Darstellung in einem Bit abweicht und deshalb keine Gleichheit im Sinne von Java vorliegt.

Aus diesem Grund vermeidet man floats für alles, wo Genauigkeit einigermaßen wichtig ist, beispielsweise bei Banken. Dort rechnet man in Centbeträgen und nicht in dezimalen Euros. Das gleiche trifft natürlich auch für doubles zu.

Hier ist ein kleiner Rechner, wo du das mal testen kannst: IEEE 754 Converter
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Float Wertebereich Java Basics - Anfänger-Themen 3
J Einige Anfängerfragen (Datentypen, Wertebereich) Java Basics - Anfänger-Themen 11
H Datentypen Wertebereich von <Klassenname> <Variable> Java Basics - Anfänger-Themen 12
F Wertebereich/Datentyp Java Basics - Anfänger-Themen 26
L Wertebereich von boolean Java Basics - Anfänger-Themen 4
G Datentypen Tipps, Ratschläge erwünscht bzgl. Datentyp bestimmen über Wertebereich Java Basics - Anfänger-Themen 5
L Wertebereich if-Satz angeben (z.B: Benzinverbrauch 51 <=75<) Java Basics - Anfänger-Themen 1
F Map, jedoch mit einem Wertebereich Java Basics - Anfänger-Themen 3
L Wertebereich eingrenzen Java Basics - Anfänger-Themen 11
G Wertebereich wie kodieren? Java Basics - Anfänger-Themen 5
T Setter Methode Wertebereich eingrenzen Java Basics - Anfänger-Themen 5
R math.random wertebereich 16-21 Java Basics - Anfänger-Themen 3
K OOP Wertebereich Ergebnis von % Operator Java Basics - Anfänger-Themen 8
hdi Wertebereich von double, wtf? Java Basics - Anfänger-Themen 2
K Wertebereich bei Attributdeklaration Java Basics - Anfänger-Themen 2
J Random Wertebereich Java Basics - Anfänger-Themen 2
T Wertebereich auf 0 bis 1 einschränken Java Basics - Anfänger-Themen 10
W Double or Float zusammenrechnen Java Basics - Anfänger-Themen 15
T float soll durch schleife die größte mögliche Zahl herausfinden, Ausgabe ist aber "Infinity" Java Basics - Anfänger-Themen 1
H Cast von Float nach String klappt nicht Java Basics - Anfänger-Themen 12
ms_cikar Bin to Float convertieren funktioniert nicht Java Basics - Anfänger-Themen 24
S Fragen zu Ausgabe double und float Java Basics - Anfänger-Themen 3
B String to Float Java Basics - Anfänger-Themen 27
A Negative float Werte? Java Basics - Anfänger-Themen 10
J Float Frage Java Basics - Anfänger-Themen 1
K Überprüfen ob Eingabe ein Float ist Java Basics - Anfänger-Themen 4
V Variablen Genauigkeit von float Java Basics - Anfänger-Themen 3
M Datentypen Byte, Float und Boolean Java Basics - Anfänger-Themen 13
MiMa String nach float Konvertieren Java Basics - Anfänger-Themen 23
S Math.ceil für float Java Basics - Anfänger-Themen 1
T Kann erbende Klasse Attribute der vererbenden Klasse anpassen (int -> float)? Java Basics - Anfänger-Themen 9
J Array zu float Java Basics - Anfänger-Themen 6
I Datentypen float-Grenzen (?) Java Basics - Anfänger-Themen 21
X Einfache Frage; wie soll ich die spezielle float var speichern? Java Basics - Anfänger-Themen 2
C Erste Schritte Eingabe mit Float Java Basics - Anfänger-Themen 1
K Erste Schritte switch - Warum sind long/float/double/... nicht erlaubt? Java Basics - Anfänger-Themen 5
M Datentypen Integer und Float Konflikt Java Basics - Anfänger-Themen 3
N Mehrdimensionales float Array aus .txt-Datei einlesen? Java Basics - Anfänger-Themen 17
V Datentypen Position mit Int und Float berechen und ausgeben Java Basics - Anfänger-Themen 5
G double in float umwandeln Java Basics - Anfänger-Themen 2
B Datentypen Test float und double speichern Zahlen nur ungefähr Java Basics - Anfänger-Themen 4
P Variablen 2D float unterteilen Java Basics - Anfänger-Themen 3
W Variablen float rundet beim Bruch rechnen Java Basics - Anfänger-Themen 3
M Erste Schritte float-Array auslesen Java Basics - Anfänger-Themen 4
S byte to float Java Basics - Anfänger-Themen 4
J Falsche Darstellung von Float Java Basics - Anfänger-Themen 2
1 float Array deklarieren Java Basics - Anfänger-Themen 10
T Operatoren Float in byte umwandeln Java Basics - Anfänger-Themen 3
N Methoden String to Float Java Basics - Anfänger-Themen 3
G Queue mit int oder float Java Basics - Anfänger-Themen 3
Luk10 Unpräzise float-Werte Java Basics - Anfänger-Themen 10
U Nachbarzahl einer Float Java Basics - Anfänger-Themen 4
V Double schneller als Float? Java Basics - Anfänger-Themen 13
T float[] in float Fehler Java Basics - Anfänger-Themen 6
P Einem Double-Objekt einen float-Wert zuweisen Java Basics - Anfänger-Themen 2
B Datentypen Float ohne .0 ausgeben, sonstige Nachkommastellen aber erhalten Java Basics - Anfänger-Themen 4
K aus String mach Float funktioniert nicht warum? Java Basics - Anfänger-Themen 7
C Probleme mit float und int Java Basics - Anfänger-Themen 3
O 64bit- OS byte, short, int oder long bzw. float oder double? Java Basics - Anfänger-Themen 13
M String Datei in Float-Matrix umwandeln Java Basics - Anfänger-Themen 8
M float/double Anzahl Nachkommastellen ermitteln Java Basics - Anfänger-Themen 18
K float to String Java Basics - Anfänger-Themen 11
T Fehler beim Konvertieren (String --> Float) Java Basics - Anfänger-Themen 5
C Falsches Ergebnis float-Addition Java Basics - Anfänger-Themen 10
N Datentypen Warum Compilerfehler bei float f = 4.0; Java Basics - Anfänger-Themen 2
X Float ausgeben Java Basics - Anfänger-Themen 3
B Datentypen char, int, float in String Variable speichern Java Basics - Anfänger-Themen 4
M Float und double Java Basics - Anfänger-Themen 11
S Datentypen float statt void Java Basics - Anfänger-Themen 3
J String => Float Problem Java Basics - Anfänger-Themen 10
C Datentypen Float und Double Java Basics - Anfänger-Themen 2
M Float auf bestimmte Nachkommazahl runden Java Basics - Anfänger-Themen 3
D Datentypen Parse float[] to int[] Java Basics - Anfänger-Themen 4
S Long und Float Frage Java Basics - Anfänger-Themen 2
lenniii float[] Java Basics - Anfänger-Themen 2
S casten array in int von float Java Basics - Anfänger-Themen 5
P float Eingabe wird nicht akzeptiert, obwohl Variable als float deklariert Java Basics - Anfänger-Themen 2
M Vergleich Float-, Doublewert Java Basics - Anfänger-Themen 10
F Array in double/float Java Basics - Anfänger-Themen 4
A text mit float ausgeben Java Basics - Anfänger-Themen 14
G float - Frage Java Basics - Anfänger-Themen 2
G Float schneidet nach dem Rechnen auf eine Stelle ab Java Basics - Anfänger-Themen 9
G String zu float oder int Java Basics - Anfänger-Themen 3
P Float wisenschaftliche Ausgabe/Exponenten Java Basics - Anfänger-Themen 2
G Float Nachkommazahlen vergleichen Java Basics - Anfänger-Themen 7
G PRoblem mit rekursiver float additions methode Java Basics - Anfänger-Themen 9
O Object in Float konvertieren Java Basics - Anfänger-Themen 2
F bei einem Float nur x Stellen nach dem Komma anzeigen ? Java Basics - Anfänger-Themen 7
D Formatierung: ganzzahlige Float Werte nach Int Java Basics - Anfänger-Themen 2
V Exponentieren mit Exponenten vom Typ float Java Basics - Anfänger-Themen 2
J einlesen von datei, float und array und und und. Java Basics - Anfänger-Themen 7
B Vector nach float[] casten Java Basics - Anfänger-Themen 6
S float in int umwandeln? Java Basics - Anfänger-Themen 4
N String -> float Java Basics - Anfänger-Themen 3
M Float-Zahl auf x Stellen beschränken Java Basics - Anfänger-Themen 6
M Problem mit float und nullzuweisung Java Basics - Anfänger-Themen 15
M Float in String umwandeln Java Basics - Anfänger-Themen 9
G float in int wandeln Java Basics - Anfänger-Themen 2
H float Java Basics - Anfänger-Themen 3
K Eingabe von float werten Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben