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 桁近くにはなりません。ただし、bigintプラグマを使用して透過的な大整数処理を取得できuse bigint;ます。コードに追加するだけです。(これは明らかに浮動小数点演算ほどには機能しませんが、文字列を自分で操作するよりはましです。)

于 2013-06-10T02:17:05.107 に答える