sprintf / printf右键浮动,在固定宽度字段中为零

时间:2014-08-08 15:31:24

标签: perl printf

我正在使用PERL(由于遗留原因),我想在CSV文件中格式化固定宽度列。如何格式化以下值:

1.0001
10.0001
100.0001
1000.0001
1000000.1
100000001

通过右边填充浮动为固定宽度为8或者为零, BUT 如果遇到大整数,则字段宽度必须增大以适应:

1.000100
10.00010
100.0001
1000.000
1000000
100000001

我没有执行任何操作,所以它们可能被视为字符串或其他操作。我已经尝试了sprintf文档中的每个组合。

感谢。

2 个答案:

答案 0 :(得分:3)

substr(sprintf("%.6f", $x), 0, 8)

substr($x.("0"x5), 0, 8)

答案 1 :(得分:0)

可能有一种更简洁的方式,但这个例子应该有效:

my @array = qw(1.0001 10.0001 100.0001 1000.0001);

for my $nums (@array) {  
    $nums .= '0' while length $nums < 8;
    print "$nums\n";
}

1.000100
10.00010
100.0001
1000.0001