2013-03-12 68 views
0

当我迭代某个整数范围并尝试使用$ _ value作为bigint时,它的行为与常规数字相反。因此,下面的代码打印 100000000000000000000 1e+20 当我期望看到100000000000000000000 100000000000000000000在范围中使用perl bigint

use warnings; 
use strict; 
use bigint; 

for my $b(10) { 
    for my $c(20) { 
     print $b**$c, "\n"; 
    } 
} 

for my $b(10..10) { 
    for my $c(20..20) { 
     print $b**$c, "\n"; 
    } 
} 

我怎样才能使此代码的行为以正确的方式?我知道Math :: BigInt,但我想知道是否有没有它的解决方案。

+0

您提供的代码将每行输出一个数字,而不是两个。而你的代码根本不使用'$ _'。请编辑您的代码或您的问题,以便您的代码显示您在问题中所谈论的内容。 – mob 2013-03-12 15:10:21

回答

0

我不知道确切的原因,但下面的链接将帮助您打印确切的值。获取控制字符串长度并打印值。

Perl - Remove trailing zeroes without exponential value

+0

感谢您的链接,但这不完全是我想要的。显示为'1e + 20'的值是一个有限精度的浮点数,但不是一个确切的整数。我想获得确切的价值,但不能以另一种方式打印。 – 2013-03-12 12:39:05