perl:bignum不使用STDIN

时间:2014-12-01 19:37:28

标签: perl

#!/usr/bin/perl

use bignum;

$line = <STDIN>;
( $arr[0], $arr[1], $n ) = split( / /, $line );
$i = 2;

sub func {
    while ( $i < $n ) {
        $t = $arr[ $i - 1 ];
        $arr[$i] = $arr[ $i - 1 ] * $arr[ $i - 1 ] + $arr[ $i - 2 ];
        $i = $i + 1;
    }
    return $arr[ $i - 1 ];
}

print func;

当我为$ arr [1]设置手动值时,bignum工作正常但是当从STDIN获取值时,它将被打印为整数而不是BIGINt。任何人都可以解释为什么会这样。

1 个答案:

答案 0 :(得分:2)

在数字上下文中使用字符串时,perl会使用C库的atof()转换它们。 bignum不会更改此设置。如果您希望以不同方式转换字符串,我建议Math::BigFloat->newMath::BigInt->new