perl打印浮点数的精度是多少?

时间:2012-12-31 17:25:16

标签: perl floating-point-precision

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

1 个答案:

答案 0 :(得分:10)

在对浮点数进行字符串化时,无论是否打印,Perl通常使用float.h中的DBL_DIG或LDBL_DIG值或者编译它的limits.h文件。

这通常是浮点类型perl的精度将使用向下舍入。例如,如果使用典型的double类型,精度为53位= 15.95位,Perl通常会以15位精度进行字符串化。