1

ここでの考え方は、 のような数値を のように"12.0"印刷することですが"12"、 のような部分的な数値は変更しないでください"14.6"

確かに、それにアプローチする方法はたくさんありますが、次の方法は、DWIM/エレガントではないように思えます。

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

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

4

2 に答える 2

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
于 2013-05-23T08:46:40.710 に答える
1
my @array = map { $_ + 0 } ( "12.0", "14.6" );
于 2013-05-23T08:46:19.053 に答える