这里的想法是将数字"12.0"打印为"12",但不要改变部分数字"14.6".
肯定有很多方法可以解决它,但以下对我来说似乎不是DWIM /优雅.
s#\.0+$## for ( "12.0", "14.6" );
$_ = int($_)==$_ ? int($_) : $_ for ( "12.0", "14.6" );
您可以使用以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)
| 归档时间: |
|
| 查看次数: |
52 次 |
| 最近记录: |