2012-12-31 62 views
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"; 

生產:perl打印浮點數的精度是多少?

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

在何種精度還包括Perl 打印浮點數?

使用:v5.8.8爲x86_64的Linux的線程多內置

+0

沒有'5.8' !!!停止!!!這有點奇怪。使用'5.10'或更高 – gaussblurinc

回答

9

當字符串化浮點數,是否打印或以其它方式,Perl中通常使用的DBL_DIG從float.h時或限制值或LDBL_DIG .h文件在哪裏編譯。

這通常是精度的浮點類型perl將使用向下舍入。例如,如果使用典型的double類型,則精度爲53位= 15.95位,而Perl通常會以15位精度進行字符串化。