Wie messe ich die Genauigkeit von Float?

... komplette Frage anzeigen

4 Antworten

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.

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)

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

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.

Was möchtest Du wissen?