2014-12-01 52 views
-1
#!/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。任何人都可以解釋爲什麼會這樣。的Perl:BIGNUM不與STDIN

+0

在您的號碼中加'0'將其轉換爲'bignum'對象。 – Miller 2014-12-01 19:51:42

回答

2

在數字上下文中使用字符串時,perl會使用C庫的atof()轉換它們。這不會被bignum所改變。如果您希望以不同的方式轉換您的字符串,我建議您使用Math::BigFloat->newMath::BigInt->new