2013-03-12 2 views
0

Когда я повторяю некоторый целочисленный диапазон и пытаюсь использовать значение $ _ как 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

ответ

0

Я не знаю точно, но приведенная ниже ссылка поможет вам напечатать точное значение. Получите длину строки управления и напечатайте значение.

Perl - Remove trailing zeroes without exponential value

+0

Спасибо за вашу ссылку, но это не совсем то, что я хочу. Значение, которое отображается как «1e + 20», является числом с плавающей запятой с конечной точностью, но не точным целым числом. И я хочу получить точное значение, но не печатать его по-другому. –