私はCでマイクロコントローラをプログラミングしていますが、コンパイラやチップは浮動小数点数を非常にうまく処理しないため、浮動小数点値を小数点以下を切り捨てて出力し、それを比例除算でスケールダウンし、モジュラスを使用して小数部分を見つけて表示します。ここに例があります: 番号25.0625
で始まります。 10000
を掛けて250625
を得る。今はもうフロートはありません。今、私たちはこのような行を使用して、この表示するには:Cプログラミング:モジュラスは結果の先行ゼロを無視しますか?どうやって止めることができますか?
sprintf(buffer, "%li.%i", Temp/10000, abs(Temp % 10000));
だから我々は最初の/ 10000
バックアウト25
を取得し、その後、我々は% 10000
によって0625
を取得します。しかし、問題は次のとおりです。私のモジュラス結果は0625の先行ゼロを無視しているので、数値を連結して連結すると、25.0625
の代わりに25.625
になります。私はそこに常に先行ゼロがあると信じることはできないので、そこにゼロを詰め込むことは答えではなく、時にはいくつかの先行ゼロが存在する可能性があります。私の質問は、どうやって先行ゼロを排除してモジュラスを抑制するのですか?ありがとう。
先頭のゼロは数値的に存在しない参照してください。 '%04i'を使用して整数を4桁の幅でフォーマットします。 – Ryan
数字に先行ゼロはありません。数値だけです。 '%04d'形式を使って4桁で印刷することができます。 – Barmar
'Temp = -123'では' sprintf(バッファ、 "%li。%i"、Temp/10000、abs(Temp%10000));は間違った出力です。 – chux