www.mikrocontroller.net

Forum: Mikrocontroller und Elektronik long zu float - kompliziert

Autor: Math_IQ = 0 (Gast)
Datum: 09.05.2008 14:48

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: 09.05.2008 15:04

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: 09.05.2008 15:11

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: 09.05.2008 15:18

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: 09.05.2008 15:21

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: 09.05.2008 15:35

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 Email-Adresse ist freiwillig. Wenn Sie automatisch per Email über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Suchfunktion und Betreffsuche benutzen - vielleicht gibt es schon einen ähnlichen Beitrag
  • Aussagekräftigen Betreff wählen
  • Im Betreff angeben um welchen Controllertyp es geht (AVR, PIC, ...)
  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang
  • JPEG-Dateien (.jpg) nur für Fotos verwenden, Schaltpläne, Screenshots usw. als PNG oder GIF anhängen

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [pre]vorformatierter Text (z.B. Code in anderen Sprachen)[/pre]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel






webmaster@mikrocontroller.netImpressumWerbung auf Mikrocontroller.net