Datentypen Floating point Fehler

G

garfield335

Gast
Ich weiss nicht ob jemand hier im Forum Ahnung hat.

Aber was genau sind Floating point numbers.


Ich habe heute festgestellt dass folgender JavaCode:

[Java]
public static void main(String[] args) {
float f = 1123.15f;
DecimalFormat df = new DecimalFormat("#.000000");
System.out.println(df.format(f));

}
[/code]


Als resultat: 1123.150024 herausschreibt.


Quizfrage: Woher kommen die "24" :?:

Kann mir jemand eine Wissenschaftliche erklärung dazu geben :(
 

Effad

Mitglied
Floating point numbers speichern "Kommazahlen".

Nun kann man theoretisch vor und nach dem Komma beliebig viele Stellen haben.

Klar ist, dass man mit einem begrenzten Speicherumfang (Java float: 32 bit) nicht beliebig viele verschiedene Kommazahlen darstellen kann. (Ist ja bei int nicht anders, das geht von -2147483648 bis 2147483647 und hat auch 32 bit).

Daher werden Zahlen "krumm", weil sie auf den nächsten darstellbaren Wert "gerundet" werden.

Wie wird es nun gespeichert: Man stellt die Zahl als m * b ^ e dar (m ... Mantisse, b ... Basis, e ... Exponent). Die Basis ist in unserem Fall 2 (per Definition), wir haben nun 32 bit, die wir zwischen Mantisse und Exponent "aufteilen" können.
D.h. vorher ziehen wir noch 1 bit ab, für + oder -, und dann legen wir fest (weil das kluge Menschen von IEEE mal so gemacht haben): m bekommt 23 bits, e bekommt 8 bits.

Hier mal ein wenig Java-Code, damit wir deine Zahl in dieser Darstellung sehen:
Java:
	public static void main(String[] args) throws IOException, InterruptedException  {
		int y = Float.floatToIntBits(1123.15f);
		String s = Integer.toString(y, 2);
		if (s.length() < 32) {
			s = "0" + s;
		}
		System.out.println(s);
	}

Das sollte diesen Output erzeugen: 01000100100011000110010011001101
Das erste bit ist das Vorzeichen.
Die nächsten 8 bit (10001001) sind der exponent, wobei dieser um 127 reduziert werden muss. e = 137 - 127 = 10.
Die nächsten 23 bit sind die Mantisse, wobei die immer mit einer gedachten 1. vorangestellt läuft, d.h. wir haben m = 1,00011000110010011001101.

Die Zahl lautet also 1,00011000110010011001101 * 2^10, d.h. wir schieben das Komma um 10 nach rechts und bekommen: 10001100011,0010011001101.
Der Vorkommateil ist 10001100011 oder eben 1123
Der Nachkommateil ist: 0,0010011001101 oder 0,150024414 und daher kommt deine "krumme Zahl".
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Algorithmus: Grad von floating zu Grad/Minute/Sekunde Java Basics - Anfänger-Themen 3
Vivien Kurze Verständnisfrage zu Java Point aus java.awt.* Java Basics - Anfänger-Themen 5
L Methode Point[], Array widergeben Java Basics - Anfänger-Themen 5
M XWPF - Bullet Point list erstellen Java Basics - Anfänger-Themen 1
TomatenBrot447 Variable vom Typ Point Java Basics - Anfänger-Themen 2
D 0 Point Exeption... aber warum? Java Basics - Anfänger-Themen 3
S double[x] , double[y] zu Point[] points kopieren? Java Basics - Anfänger-Themen 15
D Point-Array ausgeben Java Basics - Anfänger-Themen 2
V Anlegen eines 2 dim Array mit Point Elementen Java Basics - Anfänger-Themen 3
M Methoden Array unbedingt klonen? und Point Frage. Java Basics - Anfänger-Themen 4
F JavaKara - Rückgabetyp java.awt.Point Java Basics - Anfänger-Themen 2
L Klassen Point- und Math-Klasse Java Basics - Anfänger-Themen 3
L warum werden nicht die neuen Point Daten der Zeile 25 beim ausprinten Zeile 28 übernommen ? Java Basics - Anfänger-Themen 8
S Warum sind Attribute der Klasse java.awt.Point public? Java Basics - Anfänger-Themen 3
K Methoden format() mit Point(x, y)-Objekt Java Basics - Anfänger-Themen 14
K OOP Point (int x, int y) Java Basics - Anfänger-Themen 6
D X Werte in ArrayList von Point Objekte alle gleich ? Java Basics - Anfänger-Themen 11
W Nullpointerexception: Integer auf Point Java Basics - Anfänger-Themen 4
T Problem mit Point Klasse Java Basics - Anfänger-Themen 2
A Point in ArrayList packen Java Basics - Anfänger-Themen 15
S Point-Objekte in Array einfügen Java Basics - Anfänger-Themen 13
J ArrayList<Point> in eine neue ArrayList<Point> kopieren Java Basics - Anfänger-Themen 8
B Vector<Point> als Rückgabewert Java Basics - Anfänger-Themen 23
G Abstrakte Klasse "Point" Java Basics - Anfänger-Themen 2
G Plugins bzw. Extension Point in Eclipse Java Basics - Anfänger-Themen 3
M Collections kopieren (ArrayList<Point>) Java Basics - Anfänger-Themen 3
M Array mit Point-Objecten Java Basics - Anfänger-Themen 2
F Kann mir jemand bei dem Fehler helfen? Java Basics - Anfänger-Themen 6
Juelin jedit Fehler beim starten Java Basics - Anfänger-Themen 2
I Frage Thymeleaf -> Fehler ignorieren und mit "" ersetzen? Java Basics - Anfänger-Themen 15
E Matrizenmultiplikation Fehler Java Basics - Anfänger-Themen 0
Z Fehler Zeiterfassungsprogramm Anzeige Java Basics - Anfänger-Themen 3
C SwingWorker mit Fehler Java Basics - Anfänger-Themen 2
monsterherz Fehler Semikolon fehlt - ich weiss aber nicht wo da noch eines hin sollte... Java Basics - Anfänger-Themen 21
G Compiler-Fehler Fehler in Zeile 1 beheben, wie? Java Basics - Anfänger-Themen 9
W Fehler in der Datei pom.xml Java Basics - Anfänger-Themen 19
marcelnedza Finde meinen Fehler in einer Methode nicht, Java Karol Java Basics - Anfänger-Themen 15
monsterherz einfache Methode mit Fehler den ich nicht finde Java Basics - Anfänger-Themen 21
monsterherz if / else if mit Fehler den ich leider nicht finde Java Basics - Anfänger-Themen 11
N Interpreter-Fehler Compiler zeigt keine Fehler an, aber das Programm läuft nicht (BlueJ) Java Basics - Anfänger-Themen 2
ohneInformatik; Dynamische Zinsen. Wo liegt der Fehler? Java Basics - Anfänger-Themen 4
Fiedelbambu deriveFont Fehler wer kann Helfen? Java Basics - Anfänger-Themen 4
I Ical4j / Kalender einlesen von URL - Fehler: "Unparseable date" Java Basics - Anfänger-Themen 16
Lion.King Fehler in double und int Java Basics - Anfänger-Themen 7
H BlueJ: was genau ist hier der Fehler? Java Basics - Anfänger-Themen 14
berserkerdq2 Habe ein Spiel entwickelt, dass immer in der 4 Runde einen cast-Fehler erhält Java Basics - Anfänger-Themen 3
D Datentypen LocalDate.parse() ergibt Fehler Java Basics - Anfänger-Themen 5
stormyark Fehler beim überschreiben einer Variable Java Basics - Anfänger-Themen 1
T String Array Fehler beim Index Java Basics - Anfänger-Themen 3
N Fehler "Cannot instantiate the type" Java Basics - Anfänger-Themen 3
L Ich weis nicht was der Fehler ist! Java Basics - Anfänger-Themen 14
L30nS JNI Fehler, JRE und JDK Java Basics - Anfänger-Themen 8
E Executable jar file fehler Java Basics - Anfänger-Themen 9
S Fehler beim Programm Java Basics - Anfänger-Themen 2
U Warum kriege ich hier eine nullpointer exception, sehe den Fehler nicht (swing) Java Basics - Anfänger-Themen 1
J Syntax-Fehler? Java Basics - Anfänger-Themen 2
Jose05 Fehler im Programm feststellen Java Basics - Anfänger-Themen 2
S Methoden 2 non-static Methoden, trotzdem Fehler "non static method can not be referenced from a static context" Java Basics - Anfänger-Themen 9
G Taschenrechner ergibt Fehler in if-Abfrage Java Basics - Anfänger-Themen 6
I Fehler bei for-Schleife Java Basics - Anfänger-Themen 6
lol5443 Tic Tac Toe Fehler Java Basics - Anfänger-Themen 5
K Fehler bei der Implementierung Java Basics - Anfänger-Themen 6
N Fehler im Code (Aufgabe für Anfänger) Java Basics - Anfänger-Themen 11
W Verschachtelte If-else --> finde meinen Fehler nicht Java Basics - Anfänger-Themen 30
J Fehler bei array aus anderer Klasse Java Basics - Anfänger-Themen 3
H Fehler bei integer Division Java Basics - Anfänger-Themen 28
C Fehler beim erstellen eines Objektes Java Basics - Anfänger-Themen 3
N Was bedeutet dieser Fehler Java Basics - Anfänger-Themen 2
fuerteb Compiler-Fehler Methode wird nicht bzw. als Fehler erkannt Java Basics - Anfänger-Themen 4
Lion.King Fehler Java Basics - Anfänger-Themen 5
AlexG. Nullpointer exeption Fehler Java Basics - Anfänger-Themen 0
C Fehler im Code Java Basics - Anfänger-Themen 10
J Anfänger, Fehler; "Der Hund liegt begraben" Java Basics - Anfänger-Themen 3
Aqtox Hallo ich muss für die Schule ein Wuerfell Duell erstellen jedoch habe ich ein fehler Java Basics - Anfänger-Themen 4
V Wer findet den Fehler :) Java Basics - Anfänger-Themen 12
B ArrayIndexOutOfBoundsException, ich finde den Fehler nicht? Java Basics - Anfänger-Themen 10
A Compiler Fehler - not a statement Java Basics - Anfänger-Themen 2
Arita welche Fehler gibt es noch? wie kann ich es noch vervollständigen Java Basics - Anfänger-Themen 15
S Fehler bei Code mit SubStrings für mich nicht auffindbar. Java Basics - Anfänger-Themen 4
S Kriege Fehler "Exception in thread" beim Benutzen von SubStrings. Java Basics - Anfänger-Themen 2
H Logik Fehler erkennen Java Basics - Anfänger-Themen 21
T Fehler in Caesar-Chiffre Java Basics - Anfänger-Themen 7
R Fehlermeldung aber WO liegt der Fehler? Java Basics - Anfänger-Themen 7
B Nicht reproduzierbarer Fehler bei Kompilierung - Shortcut "Bereinigung" Compiler ? Java Basics - Anfänger-Themen 4
Nerdinfekt BMI Rechner, fehler beim Zurückgeben des Strings? Java Basics - Anfänger-Themen 2
pumpgun99 Fehler Meldung "else without if" Java Basics - Anfänger-Themen 3
P Was bedeutet dieser Fehler? Java Basics - Anfänger-Themen 31
KogoroMori21 Java Datum Differenz (kleiner Fehler) Java Basics - Anfänger-Themen 10
N java.util.InputMismatchException Fehler Java Scanner Java Basics - Anfänger-Themen 5
H Fehler: NullPointerException und ich weiß net warum Java Basics - Anfänger-Themen 4
R Ich sehe meinen fehler nicht Java Basics - Anfänger-Themen 8
Johannes_ece Fehler: Application Terminated (TypeError): var$0.$moveToolTo is not a function Java Basics - Anfänger-Themen 4
GermanPie Fehler in Putty (kein Hauptmanifestattribut, in jar) Java Basics - Anfänger-Themen 4
M Scannen von *.txt - Dateien; wo sind der oder die Fehler? Java Basics - Anfänger-Themen 4
P Methoden aufrufen - Fehler Java Basics - Anfänger-Themen 20
JavaClap "Bruchrechner" liefert Fehler/keine Ausgabe bei Addition und Subtraktion Java Basics - Anfänger-Themen 0
B if Clause Fehler Java Basics - Anfänger-Themen 2
G Fibonacci Zahlenreihe Fehler Java Basics - Anfänger-Themen 4
A Fehler beim Ausführen einer class Datei Java Basics - Anfänger-Themen 6
B Fehler, aber ich weiß nicht warum Java Basics - Anfänger-Themen 3

Ähnliche Java Themen


Oben