Fließkommazahlen nach ASCII
-
Servus,
mit dem nachstehenden Code kann eine Fließkommazahl nach ASCII umgewandelt werden, leider nur mit einer Stelle nach dem Komma. Ist es möglich, diesen zu erweitern sodaß zwei Stellen geschafft werden? Die Zeichen sind in TL und VL vorhanden.
char VoltageHB, VoltageLB, Temp, TL, VL; float V_ADC = 4.5; VoltageHB = (char)V_ADC; // Store the high-byte V_ADC = ( V_ADC - VoltageHB ); VoltageLB = (char)( V_ADC * 100 ); // Store the low-byte Temp = CHAR2BCD2(VoltageHB); // Convert from char to bin TL = (Temp & 0x0F) + '0'; Temp = CHAR2BCD2(VoltageLB); // Convert from char to bin VL = (Temp >> 4) + '0'; char CHAR2BCD2(char input) { char high = 0; while (input >= 10) // Count tens { high++; input -= 10; } return (high << 4) | input; // Add ones and return answer }
Gruss
Campus
-
Das CHAR2BCD2 liefert Werte zwischen 0 und 99 (also) 2 Stellen zurück.
Nur wird jeweils nur 1 Stelle ausgewertet.
Bei TL die Einerstelle und bei VL die Zehnerstelle.
Du willst bei VL noch die Einerstelle haben.
(jetzt solltest du das selber lösen können)Wo findet man eigentlich solchen Code?
-
Schau dir mal
floor()
undceil()
an.
-
DirkB schrieb:
Wo findet man eigentlich solchen Code?
Gute Frage! Warum einfach, wenn es auch kompliziert geht?
Vorschlag aus alten C-Zeiten: sprintf(buffer,format,value) oder die Funktion dtoa() herunterladen von http://berniebutt.npage.de