1

sprintf私は、桁数を小数点以下の右側と左側に固定しようとして実験してきました。

以下は機能しますが、0.00 をうまく処理できません。ご覧のとおり、0.00 は、他のすべてのゼロ以外の 10 進数値のように正しく配置されていません。

sprintf("%.2f ", $sw_chgs)

535.14  642.90  20.31  1198.35
442.74  531.90  20.31  994.95
0.00  0.00  0.00  0.00

%6f のようなフィールド幅または指定子を sprintf に追加すると、小数点以下に「2f」が出力されます。

sprintf("%6f.2f ", $ws_chgs

244.100000.2f

整数のフィールド幅を制限する次のようなことをしたい

sprintf("%6d ", $prev_rd)

小数値でそれは可能ですか?

4

2 に答える 2

4

注意してください、6フォーマットされた文字列にまとめられたすべての文字の数です。

 sprintf("%06.2f ", 1);

出力

001.00

または先行ゼロなし、

sprintf("%6.2f ", 1);

出力

  1.00
于 2013-08-17T20:17:56.597 に答える
4

format の形式を誤解していprintfます。次のようになります。

"%" <padding>? <minimum width>? "." <precision>? <type>

%7.2f。次に、このコード

say join " : ", map sprintf('%7.2f', $_), @$_ for
  [ 535.14, 642.90, 20.31, 1198.35 ],
  [ 442.74, 531.90, 20.31,  994.95 ],
  [   0.00,   0.00,  0.00,    0.00 ],
;

版画

 535.14 :  642.90 :   20.31 : 1198.35
 442.74 :  531.90 :   20.31 :  994.95
   0.00 :    0.00 :    0.00 :    0.00

最小幅には小数点記号が含まれることに注意してください。

width および precision 引数には、 like のような型は含まれませんf。したがって、 yourは、特殊でない文字列の前にある%6f.2fパターンとして解析されます。%6f.2f

于 2013-08-17T20:23:03.793 に答える