如果它们是完整的,我怎样才能优雅地将数字字符串打印为整数?

时间:2013-05-23 08:36:09

标签: perl formatting

此处的想法是将"12.0"等数字打印为"12",但不要更改"14.6"之类的部分数字。

肯定有很多方法可以接近它,但以下对我来说似乎不是DWIM /优雅。

  1. s#\.0+$## for ( "12.0", "14.6" );

  2. $_ = int($_)==$_ ? int($_) : $_ for ( "12.0", "14.6" );

2 个答案:

答案 0 :(得分:5)

您可以使用以DWIM方式打印的数字:

say 0+$_ for @numbers;

或者,如果您想使用sprintf格式,则可以使用%g模式。这会打印%e%f等数字。对于小整数,%e的行为类似于%d

printf "%g\n", $_ for "200000000.0", "12.0", "16.13";

输出:

2e+08
12
16.13

答案 1 :(得分:1)

my @array = map { $_ + 0 } ( "12.0", "14.6" );