In Perl scheint der Operator %
ganze Zahlen anzunehmen. Zum Beispiel:Wie berechnen Sie Div und Mod von Fließkommazahlen?
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);
gibt
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
Nun, wie Sie sehen können, habe ich für die Berechnung div
und mod
mit einer „Lösung“ schon kommen. Was ich jedoch nicht verstehe, ist, welche Wirkung das Vorzeichen jedes Arguments auf das Ergebnis haben sollte. Wäre nicht die div
immer positiv, wie oft n2
in n1
passt? Wie soll die Arithmetik in dieser Situation funktionieren?
Für den mathematischen Hintergrund finden Sie unter [modulare Arithmetik] (http://www.math.rutgers.edu/~erowland/modulararithmetic.html) und/oder [Abstract (oder elementare) Algebra] (http://www.millersville.edu/~bikenaga/abstract-algebra-1/modular-arithmetic/modular-arithmetic.html). – mctylr