1

6桁以下の整数を印刷しようとすると、すべてが完璧に機能します:

for i in $(seq 123450 123451); do printf "%7.0f\n" $i; done

123450

123451

ただし、整数が 7 桁以上の長さの場合、数値の最後の桁が「0」として出力されます。

for i in $(seq 1234560 1234561); do printf "%7.0f\n" $i; done

1234560

1234560

質問: どのような問題が発生し、「長い」整数を使用できるようにするにはどうすればよいですか?

4

2 に答える 2

2

デフォルトでseqは、出力を %g 形式で出力します。

$ seq 1234560 1234561
1.23456e+06
1.23456e+06

seq -f "%7.0f"代わりに使用してください:

$ seq -f "%7.0f" 1234560 1234561
1234560
1234561

または単にseq -f "%.0f"

$ seq -f "%.0f" 1234560 1234561
1234560
1234561
于 2012-09-13T15:39:29.247 に答える
1

シェルの場合、すべてが文字列であり、浮動小数点の変換と計算は避けてbc(1) に任せるのが最善です。これはうまくいくはずです:

 for i in $(seq 123450 123451); do printf "%s\n" $i; done
于 2012-09-13T15:36:05.983 に答える