Hallo, ich hab eine schnelle Frage: Wie groß sind die Datentypen Int, Float und Double bei den STM32 µC? Moritz
Moritz M. schrieb: > Wie groß sind die Datentypen Int, Float und Double bei den STM32 µC? Wenn der Compiler sich an die Vorgaben des Standards und den gesunden Menschenverstand hält, dann 32, 32 und 64. Für Letzteres allerdings würde ich nicht blind die Hand ins Feuer halten, weil vielleicht mal jemand meint, dass 32-Bit double (Hardware) auf dem F4xx doch wirklich sooo viel schneller ist als 64-Bit (Software).
Hallo, char ist doch dann auch bestimmt 1 Byte oder? Ich verwende Atollic TrueStudio, dass auf GCC basiert. Damit wird es wahrscheinlich die Standards nutzen oder?
char ist, wie Du richtig bemerkt hast, 1 Byte 'groß'. Ich verwende CrossWorks, basiert meines Wissens auch auf gcc. mfg
Hallo, okay sorry ist vielleicht ne blöde frage aber wie passt dann z.B. 4.567 in einen "nur" 4 Byte große - float- Variable? Moritz
@ Moritz M. (avrprogger) >okay sorry ist vielleicht ne blöde frage aber wie passt dann z.B. 4.567 >in einen "nur" 4 Byte große - float- Variable? Dort passt auch 3.1415927 rein. Oder 123456789. Nur wird das halt binär kodiert und nicht zeichenweise wie ASCII oder BCD. MFG Falk
..oder vorgekaut aus z.B.: http://www.henkessoft.de/C++/C++/grundlagen.htm
1 | Der Datentyp float verwendet für die Mantisse 24 bit, für den Exponenten 7 bit und für das Vorzeichen ein bit und kann daher Werte im Bereich 3.4 * 10-38 bis 3.4 * 1038 aufnehmen. Die Darstellung ist auf 6 Nachkommastellen begrenzt. |
Falk Brunner schrieb: > Dort passt auch 3.1415927 rein. Sicher?
** Lötlackl schrieb: > Sicher?
1 | #include <stdio.h> |
2 | |
3 | float p1 = 3.1415927; |
4 | |
5 | int main() |
6 | {
|
7 | printf("%.7f\n", p1); |
8 | }
|
=> 3.1415927
Logisch, denn mein SR1 hat das immer so angezeigt ;-) http://de.wikipedia.org/wiki/SR1_(Taschenrechner)
Falk Brunner schrieb: > Logisch, denn mein SR1 hat das immer so angezeigt ;-) Und der hatte 32 Bits? 8 Stellen mit Vorzeichen sind aber schon 33. ;-)
A. K. schrieb: > #include <stdio.h> > > > > float p1 = 3.1415927; > > > > int main() > > { > > printf("%.7f\n", p1); > > } > > => 3.1415927 tatsächlich!
1 | Die Darstellung ist auf 6 Nachkommastellen begrenzt. |
Was behaupten die denn für'n Mist? Bin ich zu doof zum zählen? Müssen wir nun Herrn Buchegger bemühen? mfg
Da geht auch noch mehr:
1 | #include <stdio.h> |
2 | |
3 | float p1 = 3.141592741013; |
4 | |
5 | int main() |
6 | {
|
7 | printf("%.12f\n", p1); |
8 | }
|
=> 3.141592741013
Hallo Jungs, habt ihr eine Idee, wie man einen Wert(float) in Char array umwandeln kann. verwende gerade den stm32F407, keil Compiler. Danke
>habt ihr eine Idee, wie man einen Wert(float) in Char array umwandeln >kann. sprintf, snprintf?
A. K. schrieb: > ** Lötlackl schrieb: > >> Sicher? > #include <stdio.h> > > float p1 = 3.1415927; > > int main() > { > printf("%.7f\n", p1); > } > => 3.1415927 Gib doch mal mehr Stellen aus... 3.1415927 lässt sich Binär nicht genau in einem float speichern, vielmehr wird 3,14159274101257... abgespeichert, was dann wieder zu 3.1415927 gerundet wird bei der Ausgabe mit 7 Nachkommastellen.
Steel schrieb: > Gib doch mal mehr Stellen aus... Hab ich doch vor fast einem halben Jahr schon gemacht: Beitrag "Re: STM32 Int, Float, Double" PS: Ich weiss wie binäre Fliesskommadarstellung funktioniert. Probier mal einfachere Zahlen, wie 0.1. ;-)
A. K. schrieb: > Steel schrieb: >> Gib doch mal mehr Stellen aus... > > Hab ich doch vor fast einem halben Jahr schon gemacht: > Beitrag "Re: STM32 Int, Float, Double" Oh, holger hat den ollen thread hochgeholt... Trotzdem: [ ] Du hast verstanden [X] Du hast nicht verstanden
Steel schrieb: > [ ] Du hast verstanden > [X] Du hast nicht verstanden Macht nix, ihr mich nämlich auch nicht. ;-)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.