gpt4 book ai didi

perl - perl 中的固定字段宽度数字输出

转载 作者:行者123 更新时间:2023-12-05 00:57:45 25 4
gpt4 key购买 nike

我有一个介于 0.001 和 1000 之间的随机数,我需要 perl 以固定的 5 个字符的列宽打印它。也就是说,如果它太长,它应该四舍五入,如果它太短,它应该用空格填充。

我在网上找到的所有内容都建议使用 sprintf,但如果数字太长,sprintf 会忽略字段宽度。

有没有办法让 perl 做到这一点?

什么不起作用:

my $number = 0.001 + rand(1000);
my $formattednumber = sprintf("%5f", $number);
print <<EOF;
$formattednumber

EOF

最佳答案

您需要定义您的 sprintf动态模式。小数位数取决于小数点左侧的位数。

这个功能会为你做到这一点。

use strict;
use warnings 'all';
use feature 'say';

sub round_to_col {
my ( $number, $width ) = @_;

my $width_int = length int $number;
return sprintf(
sprintf( '%%%d.%df', $width_int, $width - 1 - $width_int ),
$number
);
}

my $number = 0.001 + rand(1000);
say round_to_col( $number, 5);

输出可能是:
 11.18
430.7
0.842

关于perl - perl 中的固定字段宽度数字输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34266904/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com