Foat - Wieviel Stellen vor dem Komma sind möglich?

Gast #1853821
Lesenswert?

Hallo Zusammen,

eine kleine Frage, laut meinem C Buch ist float:
1
Datentyp        Bit    Min.          Max.
2
float           32 ca.  3.4E-38 ca.    3.4E38
3
double          64 ca.  1.7E-308 ca.  1.7E308
4
long double     80 ca. 1.2E-4932 ca. 1.2E4932

eine 3.4E-38 ???
Ich hab gelesen, 6 bis 8 Stellen hinter dem Komma,
aber wieviel vor dem Komma möglich?

Möchte gerne mit Zahlen rechnen mit max. ~150.000 vor dem
Komma und ~3-4 Stellen nach dem Komma haben.
Geht das mit einem float?

Danke
Klaus
Gast #1853834
Lesenswert?

>Möchte gerne mit Zahlen rechnen mit max. ~150.000 vor dem
>Komma und ~3-4 Stellen nach dem Komma haben.

Ich gehe mal davon aus, das du mit 150'000 (hundertfünfzigtausend) die 
Zahl und nicht die Anzahl der Kommastellen meinst:

Wenn du jetzt noch vier Kommastellen hast, dann ist das eine Zahl der 
Form:

150'000,000'0

Ohne Kommas ist das eine Zahl von 1,5Giga.

Warum nimmst du nicht einfach ein 32bit-Wert (uint32_t oder int32_t).

Somit hast du einen Zahlenraum von 0..4,3E+9 bzw. -2,2E+9..+2,2E+9.

Das kannst du doch als Zehntausendstel auffassen. Ich nenne das 
Pseudofloat.
Du arbeitest also immer mit Zehntausendensteln und tust bei der Anzeige 
einfach das Komma geeignet dazwischen schieben.

Bei dir würde das von 0..430'000, bzw. von -220'000,0000 bis 
+220'000,0000 reichen.
Moderator (Firma: Titel) Persönliche Seite #1853849
Lesenswert?

Floh schrieb:
> Eine Float ist eine Flieskommazahl, sprich...
...in der richtigen binären Fließkommadarstellung ist die führende 
Zahl immer eine implizite (binäre) 1. Danach kommen nur noch 
Nachkommastellen...  ;-)
Mehr dazu in http://de.wikipedia.org/wiki/Gleitkommazahl unter 
Normalisierung.


In eine Fliesskommazahl kann z.B. 123456.0 abgebildet werden, oder auch 
0.123456, denn das sind jeweils 6 signifikante Stellen. Aber das 
funktioniert nicht: 123456.123456, denn das wären 12 signifikante 
Stellen.

Auch so was simples geht nicht: 10000.000001
Hier wird die Nachkomma-Eins irgendwie im "Rauschen" untergehen... :-/
Gast #1853943
Lesenswert?

Hallo vielen Dank für Feedback,

Also wenn ich das jetzt richtig verstanden habe:

Also 32 Bit Integer +-2,2Mrd. = 10 Stellen ings. (+- 2200.000.000)
Wenn ich mir das Komma merke (4 Stellen), ok, dann passt es. Prima.

Wieso hat dann eine 32bit Floatzahl (123456.0) nur 6 signifikate
Stellen insg.?
hmmm...

Vg
Klaus
Moderator #1853953
Lesenswert?

Eine 32-Bit-FP-Zahl nach IEEE 754 besteht aus 23 bit Mantisse 1 bit
Vorzeichen und 8 bit Exponenent.

Das ergibt eine Auflösung von lg(2^23)=6,92 Stellen. Die siebte Stelle
ist also mit einer leichten Ungenauigkeit behaftet.

Der (dezimale) Exponent kann lg(2^2^8)=77,06 Werte annehmen, davon ist
die Hälfte positiv, die andere Hälfte negativ. Daraus ergibt sich ein
Wertebereich von etwa 10^-38 bis 10^+38.

Entsprechendes gilt für 64-FP-Zahlen (52 bit Mantisse, 1 bit Vorzeichen
und 11 bit Exponent.

  http://de.wikipedia.org/wiki/IEEE_754

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren