una resto residuo poner entera ejercicios ejemplos decimales con como calcular calculadora perl math floating-point division modulo

perl - resto - ¿Cómo se calcula div y mod de números de coma flotante?



division entera en c++ (2)

El título hace una pregunta, el cuerpo otra. Para responder la pregunta del título, al igual que en C, el operador% es un módulo entero, pero hay una rutina de biblioteca "fmod" que es un módulo de coma flotante.

use POSIX "fmod"; sub foo { my $n1 = shift; my $n2 = shift; print "perl''s fmod=" . fmod($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 fmod=6.15296300000033 my div=428 my mod=6.15296300000033 perl''s fmod=6.15296300000033 my div=-428 my mod=6.15296300000033 perl''s fmod=-6.15296300000033 my div=-428 my mod=-6.15296300000033 perl''s fmod=-6.15296300000033 my div=428 my mod=-6.15296300000033

En Perl, el operador % parece asumir números enteros. Por ejemplo:

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, como pueden ver, ya se me ocurrió una "solución" para calcular div y mod . Sin embargo, lo que no entiendo es qué efecto debe tener el signo de cada argumento en el resultado. ¿No sería siempre positivo el div , siendo la cantidad de veces que n2 encaja en n1 ? ¿Cómo se supone que la aritmética funciona en esta situación?


Dado a = qd + r , hay una ambigüedad al calcular el resto para los valores negativos de d .

P.ej:

La expresión −42 ÷ −5 , se puede expresar como: −42 = 9×(−5) + 3 o −42 = 8×(−5) + (−2) .

Entonces el resto es 3 o -2.

Para más información: Wikipedia: Resto "Desigualdad satisfecha por el resto"

Además, la salida en caso de números negativos en mod / div depende de la implementación en los lenguajes de software. Ver Wikipedia: Operación del módulo (mira la tabla a la derecha)