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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.