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!
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.
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.
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ß
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); }
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!
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.