ここでの考え方は、 のような数値を のように"12.0"
印刷することですが"12"
、 のような部分的な数値は変更しないでください"14.6"
。
確かに、それにアプローチする方法はたくさんありますが、次の方法は、DWIM/エレガントではないように思えます。
s#\.0+$## for ( "12.0", "14.6" );
$_ = int($_)==$_ ? int($_) : $_ for ( "12.0", "14.6" );
ここでの考え方は、 のような数値を のように"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;
または、sprintf
フォーマットを使用する場合は、%g
パターンを使用できます。%e
これは、またはのような数字を出力します%f
。小さい整数の場合、 のように%e
動作し%d
ます。
printf "%g\n", $_ for "200000000.0", "12.0", "16.13";
出力:
2e+08
12
16.13
my @array = map { $_ + 0 } ( "12.0", "14.6" );