5
my $num = log(1_000_000) / log(10);
print "num: $num\n";
print "int(num): " . int($num) . "\n";
print "sprintf(num): " . sprintf("%0.16f", $num) . "\n";

生成:

num: 6
int(num): 5
sprintf(num): 5.9999999999999991

perl はどのくらいの精度で浮動小数点数を出力しますか?

使用: x86_64-linux-thread-multi 用にビルドされた v5.8.8

4

1 に答える 1

10

浮動小数点数を文字列化する場合、出力するかどうかに関係なく、Perl は通常、コンパイルされた float.h または limits.h ファイルの DBL_DIG または LDBL_DIG の値を使用します。

これは通常、perl が使用する浮動小数点型の精度であり、切り捨てられます。たとえば、典型的な double 型を使用する場合、精度は 53 ビット = 15.95 桁であり、Perl は通常 15 桁の精度で文字列化します。

于 2012-12-31T17:59:14.510 に答える