是否可以使用 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;
.