3

我需要添加 50 位数字,所以我将它们作为“字符串”处理,并编写了自己的函数来将它们加在一起。之后,为了它,我尝试了这个:

readFile(shift (@ARGV));

sub readFile
{
    my $file = shift; #contains a bunch of 50-digit numbers
    my $result = 0;

    open (my $inFile, $file);

    while (<$inFile>)
    {
        chomp;
        $result += $_;
    }

    print $result;
}   

令我惊讶的是,它奏效了。我不明白。在我使用过的所有其他语言中,您必须使用某种特殊变量来执行此操作。Perl 会自动检测到你有一个非常大的数字并相应地处理它吗?如果是这样,如果有人提前知道他们将要处理非常大的数字,那么是否有一个 Perl 模块比 Perl 默认处理它们更有效?

提前致谢。

4

1 回答 1

10

Perl 将正确处理它们,作为双精度浮点值,因此您的结果不会有接近 50 位的精度。您可以使用pragmabigint获得透明的大整数处理,但是:只需use bigint;添加到您的代码中。(这显然不会像浮点数学那样执行,但它比必须自己操作字符串要好。)

于 2013-06-10T02:17:05.107 回答