Frage von CUserD, 38

Wie messe ich die Genauigkeit von Float?

Hallo Community,

ich versuche gerade die Genauigkeit für Floats bei meinem Rechner mit einem kleinen Java-Programm zu messen ... leider bekomme ich unsinnige Werte raus. Hat einer von euch eine Idee, wie ich das präzise bestimmten kann? Ich weiß zwar, dass Float eine Genauigkeit von x Bit hat, doch ist dieser Wert theoretisch. Praktisch kann ein Rechner diesen Wert (meistens) nicht erreichen.

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von Schachpapa, 16

Die Genauigkeit von float ist in Java exakt definiert und nicht rechnerabhängig.

23 Bits für die Mantisse, 8 Bits für den Exponenten, 1 Bit für das Vorzeichen.

By double sind es 52 Bits für die Mantisse, 11 für den Exponenten und 1 fürs Vorzeichen.

Antwort
von Gastnr007, 32

du rechnest deinen Wert einfach von 2-n mal diesen Wert und danach teilst du wieder von 2-n durch den Wert... danach hast du deine Originalzahl + den Fehler als 2*(n-2) Operationen (bei einer Schrittgröße von 1, bei anderen Schrittgrößen varriert es natürlich)

Antwort
von ralphdieter, 2
float eps = 1.0;
while ( 2.0 != 2.0+eps )
 eps /=2;
System.out.printf("Limit: 1!=1+%g", eps);
Antwort
von k3ltis, 28

Mit BigDecimal kannst du exakte Rechenoperationen durchführen. Vielleicht findest du etwas heraus, wenn einmal mit BigDecimal und einmal mit float bzw. double probierst und die Ergebnisse miteinander vergleichst.

Keine passende Antwort gefunden?

Fragen Sie die Community