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

对于 shell,一切都是字符串,最好避免浮点转换和计算,并留给bc(1)。这应该有效:

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