【问题标题】:To what precision does perl print floating-point numbers?perl 打印浮点数的精度是多少?
【发布时间】:2013-01-01 01:59:14
【问题描述】:
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

【问题讨论】:

  • 没有5.8!!!停止!!!有时很奇怪。使用5.10 或更高版本

标签: perl floating-point-precision


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-09
    • 1970-01-01
    • 2021-07-25
    • 2015-02-02
    • 1970-01-01
    • 2020-08-04
    • 2014-10-07
    • 1970-01-01
    相关资源
    最近更新 更多