¿Cuál es una buena forma de siempre hacer división de números enteros en Perl?¿Cómo debo hacer la división de enteros en Perl?
Por ejemplo, yo quiero:
real/int = int
int/real = int
int/int = int
¿Cuál es una buena forma de siempre hacer división de números enteros en Perl?¿Cómo debo hacer la división de enteros en Perl?
Por ejemplo, yo quiero:
real/int = int
int/real = int
int/int = int
puede convertir enteros en Perl:
int(5/1.5) = 3;
El ámbito léxico integer
pragma fuerzas de Perl para 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
Información adicional, paréntesis separa el bloque interno 'uso entero', luego fuera del bloque, se usará el cálculo real estándar tanto antes como después del bloque. – Znik
int(x+.5)
redondeará positivo valores hacia el entero más cercano. Redondear es más difícil.
Para redondear hacia cero:
int($x)
Para las soluciones a continuación, incluir la siguiente declaración:
use POSIX;
el redondeo por defecto: 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 cercano: POSIX::floor($x+.5)
Tenga en cuenta que int($x+.5)
falla mal para valores negativos. int(-2.1+.5)
es int(-1.6)
, que es -1.
No, 'int' se redondea hacia cero, mientras que el redondeo es normal hacia par. Ejecute 'perl -le 'printf" int (% s) es% d, redondo (% s) es% .0f; \ n ", ($ _ + 0.5) x4 para -10..10'' y verá cosas como int (-3.5) es -3, round (-3.5) es -4; int (-2.5) es -2, round (-2.5) es -2; int (-1.5) es -1, round (-1.5) es -2; int (-0.5) es 0, redondo (-0.5) es -0; int (0.5) es 0, redondo (0.5) es 0; int (1.5) es 1, round (1.5) es 2; int (2.5) es 2, round (2.5) es 2; int (3.5) es 3, redondo (3.5) es 4; int (4.5) es 4, round (4.5) es 4; – tchrist
@tchrist En realidad, el redondeo normal es hacia el más cercano; solo el caso de borde .5 redondea hacia par. – fishinear
Ej 9/4 = 2,25
int (9)/int (4) = 2
9/4 - resto/deniminator = 2
9/4 - 9% 4/4 = 2
Esta respuesta es completamente incorrecta. "int (9)/int (4) == 2.25", entonces creo que Paul quiso decir int (9/4) –
Creo que no puso a prueba sus ejemplos – Znik
esperar que funcione
int (9/4) = 2.
Gracias Manojkumar
puede:
use integer;
se explica por Michael Ratanapintha o persona utilice de forma manual:
$a=3.7;
$b=2.1;
$c=int(int($a)/int($b));
aviso, 'int' no está lanzando. esta es la función para convertir el número a la forma entera. esto es porque Perl 5 no tiene una división entera separada. excepción es cuando 'uso entero'. Entonces perderás una división real.
Sí, pero la división entera sería int (5)/int (1.5).De lo contrario, estás redondeando la división real. – Rog
pero int (5)/int (1.5)! = Int – Learning
Lo siento, esto es lo que realmente estaba pidiendo. Quería un resultado int después de hacer cualquier tipo de división. Entonces sí, estaba buscando redondeo. –