Datum:
Hallo, ich hab eine schnelle Frage: Wie groß sind die Datentypen Int, Float und Double bei den STM32 µC? Moritz
Datum:
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).
Datum:
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?
Datum:
char ist, wie Du richtig bemerkt hast, 1 Byte 'groß'. Ich verwende CrossWorks, basiert meines Wissens auch auf gcc. mfg
Datum:
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
Datum:
@ 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
Datum:
..oder vorgekaut aus z.B.: http://www.henkessoft.de/C++/C++/grundlagen.htm
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?
Datum:
** Lötlackl schrieb: > Sicher?
#include <stdio.h> float p1 = 3.1415927; int main() { printf("%.7f\n", p1); } |
=> 3.1415927
Datum:
Logisch, denn mein SR1 hat das immer so angezeigt ;-) http://de.wikipedia.org/wiki/SR1_(Taschenrechner)
Datum:
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. ;-)
Datum:
A. K. schrieb: > #include <stdio.h> > > > > float p1 = 3.1415927; > > > > int main() > > { > > printf("%.7f\n", p1); > > } > > => 3.1415927 tatsächlich!
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
Datum:
Da geht auch noch mehr:
#include <stdio.h> float p1 = 3.141592741013; int main() { printf("%.12f\n", p1); } |
=> 3.141592741013
Datum:
Hallo Jungs, habt ihr eine Idee, wie man einen Wert(float) in Char array umwandeln kann. verwende gerade den stm32F407, keil Compiler. Danke
Datum:
>habt ihr eine Idee, wie man einen Wert(float) in Char array umwandeln >kann. sprintf, snprintf?
Datum:
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.
Datum:
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. ;-)
Datum:
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
Datum:
Steel schrieb: > [ ] Du hast verstanden > [X] Du hast nicht verstanden Macht nix, ihr mich nämlich auch nicht. ;-)