www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik STM32 Int, Float, Double


Important announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Moritz M. (avrprogger)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Hallo,

ich hab eine schnelle Frage:

Wie groß sind die Datentypen Int, Float und Double bei den STM32 µC?

Moritz

Autor: ** Lötlackl (pappnase) Benutzerseite
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
int 4 Bytes
float 4 Bytes
double 8 Bytes

mfg

Autor: A. K. (prx)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
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).

Autor: Moritz M. (avrprogger)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
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?

Autor: ** Lötlackl (pappnase) Benutzerseite
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
char ist, wie Du richtig bemerkt hast, 1 Byte 'groß'.
Ich verwende CrossWorks, basiert meines Wissens auch auf gcc.

mfg

Autor: Moritz M. (avrprogger)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
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

Autor: A. K. (prx)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert

Autor: Moritz M. (avrprogger)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Hallo,

danke :)

Autor: Falk Brunner (falk)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
@  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

Autor: ** Lötlackl (pappnase) Benutzerseite
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
..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?

Autor: A. K. (prx)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
** Lötlackl schrieb:

> Sicher?
#include <stdio.h>

float p1 = 3.1415927;

int main()
{
        printf("%.7f\n", p1);
}
=> 3.1415927

Autor: Falk Brunner (falk)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Logisch, denn mein SR1 hat das immer so angezeigt ;-)

http://de.wikipedia.org/wiki/SR1_(Taschenrechner)

Autor: A. K. (prx)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
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. ;-)

Autor: ** Lötlackl (pappnase) Benutzerseite
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
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

Autor: A. K. (prx)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Da geht auch noch mehr:
#include <stdio.h>

float p1 = 3.141592741013;

int main()
{
        printf("%.12f\n", p1);
}
=> 3.141592741013

Autor: ruben o. (ruben_o)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Hallo Jungs,

habt ihr eine Idee, wie man einen Wert(float) in Char array umwandeln 
kann.
verwende gerade den stm32F407, keil Compiler.

Danke

Autor: holger (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
>habt ihr eine Idee, wie man einen Wert(float) in Char array umwandeln
>kann.

sprintf, snprintf?

Autor: Steel (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
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.

Autor: A. K. (prx)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
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. ;-)

Autor: Steel (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
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

Autor: A. K. (prx)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Steel schrieb:
> [ ] Du hast verstanden
> [X] Du hast nicht verstanden

Macht nix, ihr mich nämlich auch nicht. ;-)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel




Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder GIF-Format hochladen.
Siehe Bildformate
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.

Mit dem Abschicken erkennst du die Nutzungsbedingungen an.

webmaster@mikrocontroller.netImpressumNutzungsbedingungenWerbung auf Mikrocontroller.net