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

Zai*_*aid 1 formatting perl

这里的想法是将数字"12.0"打印为"12",但不要改变部分数字"14.6".

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

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

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

amo*_*mon 5

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

say 0+$_ for @numbers;
Run Code Online (Sandbox Code Playgroud)

或者,如果要使用sprintf格式,可以使用该%g模式.这打印数字%e%f.对于小整数,%e表现得像%d.

printf "%g\n", $_ for "200000000.0", "12.0", "16.13";
Run Code Online (Sandbox Code Playgroud)

输出:

2e+08
12
16.13
Run Code Online (Sandbox Code Playgroud)