在Perl中,%
運算符似乎假定爲整數。例如:你如何計算浮點數的div和mod?
sub foo {
my $n1 = shift;
my $n2 = shift;
print "perl's mod=" . $n1 % $n2, "\n";
my $res = $n1/$n2;
my $t = int($res);
print "my div=$t", "\n";
$res = $res - $t;
$res = $res * $n2;
print "my mod=" . $res . "\n\n";
}
foo(3044.952963, 7.1);
foo(3044.952963, -7.1);
foo(-3044.952963, 7.1);
foo(-3044.952963, -7.1);
給現在
perl's mod=6
my div=428
my mod=6.15296300000033
perl's mod=-1
my div=-428
my mod=6.15296300000033
perl's mod=1
my div=-428
my mod=-6.15296300000033
perl's mod=-6
my div=428
my mod=-6.15296300000033
,你可以看到,我想出了一個「解決方案」已經計算div
和mod
。但是,我不明白的是每個論證的符號應該對結果有什麼影響。 div
是不是總是正數,是n2
適合於n1
的次數?算術在這種情況下應該如何工作?
對於數學背景,參見[模運算(http://www.math.rutgers.edu/~erowland/modulararithmetic.html)和/或[摘要(或小學)代數](http://www.millersville.edu/~bikenaga/abstract-algebra-1/modular-arithmetic/modular-arithmetic.html)。 – mctylr 2014-07-24 18:47:52