是否可以使用Perl的sprintf
函數爲浮點數指定最大精度寬度?在閱讀文檔後,我相信這不是,但可能是我忽略了一些東西。我可以在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;
方式
'人sprintf'可能是一個很好的閱讀... – pavel