此处的想法是将"12.0"
等数字打印为"12"
,但不要更改"14.6"
之类的部分数字。
肯定有很多方法可以接近它,但以下对我来说似乎不是DWIM /优雅。
s#\.0+$## for ( "12.0", "14.6" );
$_ = int($_)==$_ ? int($_) : $_ for ( "12.0", "14.6" );
答案 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" );