Forum: Mikrocontroller und Digitale Elektronik Foat - Wieviel Stellen vor dem Komma sind möglich?


von Klaus (Gast)


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

von Klaus (Gast)


Lesenswert?

ups, natürlich float im titel... :)

von Lasse S. (cowz) Benutzerseite


Lesenswert?

Es kommt auf die Anzahl der verwertbaren Ziffern an, nicht auf die 
Position des Kommas.


1,0001 = 10001E-4 (huch, plötzlich ist das Komma weg ;) )

von Floh (Gast)


Lesenswert?

Klaus schrieb:
> eine 3.4E-38 ???

3,4 mal 10 hoch -38

> Ich hab gelesen, 6 bis 8 Stellen hinter dem Komma,
> aber wieviel vor dem Komma möglich?

Eine. Float ist eine Flieskommazahl, sprich

10 = 1.0E1
2450 = 2.450E3
...

von Matthias L. (Gast)


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.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


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... :-/

von P. M. (o-o)


Lesenswert?

Matthias Lipinsky schrieb:
> Das kannst du doch als Zehntausendstel auffassen. Ich nenne das
> Pseudofloat.

Nein, das ist dann eben genau kein Float mehr sondern _Fix_komma. 
Nachvollziehbar, was du mit Pseudofloat meinst, aber der Begriff greift 
voll daneben, da Float ja genau ausdrückt, dass das Komma fliesst 
und eben nicht Fix ist.

von Matthias L. (Gast)


Lesenswert?

@ P. M. (o-o)

Du hast ja Recht. Deshalb hab ich ja geschrieben:
ich  nenne  das Pseudofloat

von Klaus (Gast)


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

von Yalu X. (yalu) (Moderator)


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

von dave (Gast)


Lesenswert?

Matthias Lipinsky schrieb:
> Das kannst du doch als Zehntausendstel auffassen. Ich nenne das
> Pseudofloat.

ich nenne das fixkomma scnr

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.