www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik long zu float - kompliziert


Autor: Math_IQ = 0 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich möchte eine long-Zahl in float umwandeln, und das mit folgenden 
Gegebenheiten:

In long steht 25000007. Die 7 ist aber die erste Stelle rechts von 
Komma.
Der Wert in long entspricht also '2500000,7'.

Da ich diesen Wert mit printf über RS232 übertragen will, suche ich eine 
Möglichkeit den long-Wert nach float zu konvertieren.

Bin für Anregungen dankbar!

Autor: Timmo H. (masterfx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mach doch zwei %X ausgaben daraus, dann sparst du dir die FP-Lib (sofern 
du mit µC ohne fpu arbeitest). Musst ja nur ein bissl rüberschieben und 
casten bzw. verUNDen.

Autor: Detlev T. (detlevt)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es wäre sehr hilfreich, wenn du deine Programmmierumgebung mitgeteilt 
hättest (Assembler, C, Basic, LISP?). Unter C kann man natürlich einfach 
mit 0.1 multiplizieren, das führt zu einer impliziten Typumwandlung.

Wenn du den Wert aber nur über die Schnittstelle schicken willst, ist 
eine Umwandlung in float allerdings überflüssig. Wahlweise:
- in einen String umwandeln, Dezimalpunkt einfügen, ausgeben.
- zwei neue Variablen nehmen, einen mit Wert / 10, den anderen mit dem 
Rest und die entsprechend ausgeben.

Am anderen Ende der Übertragung merkt ja keiner, dass das gar kein float 
war.

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kann ein Single (32Bit) den Wert 2500000,7 genau darstellen? Single hat 
24 signifikante Bits!
Ich würde den Long durch 10 dividieren und ganzzahlig ausdrucken, dann 
den Rest nach dem Komma drucken.

Gruß

Autor: eProfi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wieso Float??
Du gibst die Zahl in zwei Schritten aus:

#include <stdio.h>
void main(void){
unsigned long int n=25000007L;
printf("%lu,%lu",n/10,n%10);
}

Autor: Math_IQ = 0 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo, vielen Dank für eure vielen Vorschläge!

Da hab ich genug zum austesten.

Ja, ich hats vergessen, ist für Codevision und mega64.


Schöne Feiertag!

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
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
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 bestätigst du, die Nutzungsbedingungen anzuerkennen.