2009-02-12 15 views

Respuesta

36

puede convertir enteros en Perl:

int(5/1.5) = 3; 
+5

Sí, pero la división entera sería int (5)/int (1.5).De lo contrario, estás redondeando la división real. – Rog

+4

pero int (5)/int (1.5)! = Int – Learning

+2

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. –

75

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 
+0

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

4

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.

+4

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

+0

@tchrist En realidad, el redondeo normal es hacia el más cercano; solo el caso de borde .5 redondea hacia par. – fishinear

-2

Ej 9/4 = 2,25

int (9)/int (4) = 2

9/4 - resto/deniminator = 2

9/4 - 9% 4/4 = 2

+3

Esta respuesta es completamente incorrecta. "int (9)/int (4) == 2.25", entonces creo que Paul quiso decir int (9/4) –

+0

Creo que no puso a prueba sus ejemplos – Znik

0

esperar que funcione

int (9/4) = 2.

Gracias Manojkumar

3

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.

Cuestiones relacionadas