¿Cómo debo hacer la división entera en Perl?
-
22-08-2019 - |
Pregunta
¿Qué es una buena manera de siempre hacer la división entera en Perl?
Por ejemplo, quiero:
real / int = int
int / real = int
int / int = int
Solución 2
Puede convertir enteros en Perl:
int(5/1.5) = 3;
Otros consejos
El ámbito léxico integer
pragma fuerzas Perl de usar la aritmética de enteros en su alcance:
print 3.0/2.1 . "\n"; # => 1.42857142857143
{
use integer;
print 3.0/2.1 . "\n"; # => 1
}
print 3.0/2.1 . "\n"; # => 1.42857142857143
int(x+.5)
redondeará valores positivos hacia el número entero más cercano. El redondeo hacia arriba es más difícil.
Para redondear hacia cero:
int($x)
Para las soluciones a continuación, incluir la siguiente declaración:
use POSIX;
Para redondear hacia abajo: POSIX::floor($x)
Para redondear: POSIX::ceil($x)
Para redondear lejos de cero: POSIX::floor($x) - int($x) + POSIX::ceil($x)
Para redondear al entero más próximo: POSIX::floor($x+.5)
Tenga en cuenta que no int($x+.5)
mal para valores negativos. int(-2.1+.5)
es int(-1.6)
, que es -1.
Puede:
use integer;
se explica por Michael Ratanapintha o bien utilizar manualmente:
$a=3.7;
$b=2.1;
$c=int(int($a)/int($b));
aviso, 'int' no está lanzando. esto es función de conversión de número a la forma de número entero. esto es porque Perl 5 no tiene división de enteros separado. excepción es cuando el 'uso entero'. Entonces perderá división de bienes.
Espero que funcione
int (9/4) = 2.
Gracias Manojkumar
Por ejemplo: 9/4 = 2,25
int (9) / int (4) = 2
9/4 - resto / deniminator = 2
9/4 - 9% 4/4 = 2