私がprintfを使用しているとき、
printf("%.2f zł", 20.4);
それは返す
20.40 zł9
でも私はしたい
20.40 zł
使用時sprintf("%.2f zł", 20.4)
は問題ありません。
zł
はポーランドの通貨記号です。「ł」を「l」に置き換えると、まだこのような問題が発生するため、エンコードとは関係ないようです。
通貨に printf を正しく使用するにはどうすればよいですか?
9 は別の印刷の結果ではなく、コード内でさらに発生していると確信していますか? この printf 行をコメントアウトして、9 がまだ残っているかどうかを確認してください。
ポリッシュ文字を通常の L に置き換えても問題が解決しない場合は、エンコーディングの問題ではないと正しく評価したことになります。
printf()
とsprintf()
私が考えることができる唯一の違いは、結果を返す方法のようです。文字列を返しprintf
ながらHTMLバッファに出力します。sprintf
わかった。
私が書いた:
echo printf(...);
代わりに:
printf(...);
printf() によって生成された文字列の後、printf によって返される値である文字列の長さを取得しました (実際には、123.45 値の場合は追加された数値は 9、20.4 の場合は数値 8 でした)。