En Perl, el operador %
parece asumir números enteros. Por ejemplo:¿Cómo se calcula div y mod de números de coma flotante?
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);
da
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
Ahora bien, como se puede ver, yo he llegado con una "solución" para el cálculo ya div
y mod
. Sin embargo, lo que no entiendo es qué efecto debe tener el signo de cada argumento sobre el resultado. ¿No sería positivo el div
, siendo la cantidad de veces n2
que cabe en n1
? ¿Cómo se supone que la aritmética funciona en esta situación?
Para la formación matemática, véase [aritmética modular] (http://www.math.rutgers.edu/~erowland/modulararithmetic.html) y/o [resumen (o elemental) álgebra] (http://www.millersville.edu/~bikenaga/abstract-algebra-1/modular-arithmetic/modular-arithmetic.html). – mctylr