float Zahl ändert sich durch Formatierung?
-
Hallo,
auch ich ein Neuling hier....
Kann mir jemand erklären, weshalb sich die Zahl im Nachkommabereich ändert?Danke schon mal für die Mühe...
Jörg#include <iostream> using namespace std; int main() { float f1 =15000.23; printf("\nZahl wird formatiert: %0.6f", f1); // 4 Nachommastellen, bei Int Zahlen = 4 Stellen // Ausgabe erfolgt als 15000.230469! return 0; }
-
15000.23 hat 7 signifikante Dezimal-Stellen, von denen jede bis zu log(10)/log(2)3.32 Bits repräsentiert.
Insgesamt 7 x 3.32 ~ 23.2 Bits Information.23.2 Bits Information in einer Mantisse mit 23 Bit (float) zu codieren wird dann im allgemeinen
etwas knappsprich, der Computer muß in der internen Darstellung die Mantisse auf 23 Bits runden.
-
aber dann versteh ich eines nicht.
Lt. meinem Buch geht der Zahlenbereich von float von -3.40e+38 bis +3.40e+38.
Dann hilft mir diese Angabe doch gar nicht weiter?
-
nö, für die Genauigkeit hilft die Angabe des maximalen Exponenten nicht viel weiter, da hast du recht. Dafür ist die Mantissenbreite verantwortlich.
3.4e+38 ~ 2^128, und das kommt daher, daß der Exponent mit 8 Bit gespeichert
wird.
-
Gut, werd ich mich mit dem Thema mal eingehender beschäftigen.
DankeDir!
-
gerne.