Perl のsprintf
関数を使用して、浮動小数点数の最大精度幅を指定することはできますか? ドキュメントを読んだ後、そうではないと思いますが、何かを見落としている可能性があります。
したがって、4.12 を持っている場合は、数値を としてフォーマットしたいと思い4.12
ます。
my $abc = 4.12;
my $out = sprintf("%?...", $abc); # $out eq '4.12';
それでも、数値の精度が 6 桁を超える場合は、6 桁のみが必要です。
my $def = 1.23456789;
my $out = sprintf("%?...", $def); # $out eq '1.234568';
これは可能sprintf
ですか?
編集
Currentyl、私は使用しています
sub output_number {
my $number = shift;
my $ret = sprintf("%.6f", $number);
$ret =~ s/0*$//g;
$ret =~ s/\.$//g;
return $ret;
}
私の目的のために、それは私が必要とすることをします。しかし、もっとエレガントな方法があることを願っていました。の使用に必ずしも制限されないワンライナーが望ましいsprintf
。
また、提案されたprintf ("%.7g", $number)
ものは私が望むように動作しないことに注意してください(たとえば、$n = 0.00000000001;
.