Умножение больших чисел в perl - PullRequest
0 голосов
/ 23 марта 2012

У меня проблема со сценариями ниже и Как сделать результаты мультипликации равными 1332521814089765.

#!/usr/bin/perl

my $divide = 1332521814089765/1332521809;
my $results1 = int $divide;
print "After Divide: $results1 \n";

my $multiplication = $results1*1332521809;
my $results2 = $multiplication;
print "After Multiplication: $results2 \n"; #How to make multification results equals to 1332521814089765 

после поиска и проверки результатов здесь, но все еще не получить ожидаемых результатов

my $divide = 1332521814089765/1332521809;
my $multiplication = $divide*1332521809;
my $results = $multiplication/10;
print "My     Results: $results\nExpect Results: 1332521814089765\n";

1 Ответ

2 голосов
/ 23 марта 2012

1000000 * 1332521809 равно 1332521809000000. Почему вы ожидаете 1332521814089765?

Возможно, вы умножаете неправильные числа, то есть вы хотите использовать

 my $multiplication = $divide*1332521809;

вместо

 my $multiplication = $results1*1332521809;

Другая возможность состоит в том, что вы пытаетесь найти обратную функцию

$y = int($x/$k)

К сожалению, нет ни одного, потому что есть несколько значений $x, которые дают одинаковые $y.

int(1332521809000000/1332521809) = 1000000
...
int(1332521814089764/1332521809) = 1000000
int(1332521814089765/1332521809) = 1000000
int(1332521814089766/1332521809) = 1000000
...
int(1332523141521808/1332521809) = 1000000
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...