Ich programmiere einen Mikrocontroller in C und da der Compiler oder Chip nicht sehr gut mit Gleitkommazahlen umgehen kann, ist es empfehlenswert, den Gleitkommawert so hoch zu skalieren, dass die Dezimalzahl verschwindet und dann die Zahl ausgegeben wird. skaliere es mit einer proportionalen Division zurück und verwende den Modulus, um den Bruchteil zu finden und anzuzeigen. Hier ein Beispiel: Beginnen Sie mit der Nummer 25.0625
. Multiplizieren Sie mit 10000
, um 250625
zu erhalten. Gut, jetzt haben wir keinen Schwimmer mehr. Nun ist diese anzuzeigen verwenden wir eine Zeile wie diese:C-Programmierung: Ignoriert der Modul führende Nullen im Ergebnis? Wie kann ich damit aufhören?
sprintf(buffer, "%li.%i", Temp/10000, abs(Temp % 10000));
So wir zuerst die 25
wieder raus durch / 10000
, dann erhalten wir die 0625
out von % 10000
. Hier ist das Problem: Es scheint, dass mein Modulo-Ergebnis die führende Null in 0625 ignoriert. Wenn es die Zahl wieder zusammenfügt, wird es 25.625
anstelle von 25.0625
. Ich kann nicht darauf zählen, dass es immer eine führende Null gibt, also ist das Stempeln einer Null nicht die Antwort, und es könnte zu anderen Zeiten mehrere führende Nullen geben. Meine Frage ist, wie kann ich den Modul unterdrücken, indem führende Nullen ausgeschlossen werden? Vielen Dank.
Führende Nullen bestehen nicht numerisch; Verwenden Sie '% 04i', um eine ganze Zahl mit vier Ziffern zu formatieren. – Ryan
Zahlen haben keine führenden Nullen, sie sind nur Zahlen. Sie können das Format "% 04d" verwenden, um es mit 4 Ziffern zu drucken. – Barmar
BTW, 'sprintf (Puffer,% li.% I", Temp/10000, abs (Temp% 10000)); 'ist sicherlich falsch Ausgabe mit' Temp = -123'. – chux