El redondeo de los números en Perl

En el lenguaje de programación Perl hay varias maneras de cómo se puede redondear un número a un entero.

En función de lo que es necesario obtener al final debemos utilizar diferentes métodos. Si selecciona el método de redondeo, se debe prestar atención a la manera en que se deben redondeará los números negativos.

Aquí hay una tabla en la que se muestran los resultados de los diferentes métodos de redondeo. Todos estos métodos de redondeo están disponibles en el Perl de la caja, si usted tiene un Perl, usted puede utilizar cualquiera de estos métodos.

                        -1.8  -1.5  -1.2   0     1.2   1.5   1.8
.................................................................
int($x)                 -1    -1    -1     0     1     1     1
POSIX::floor($x)        -2    -2    -2     0     1     1     1
int($x + 0.5)           -1    -1     0     0     1     2     2
sprintf('%.0f', $x)     -2    -2    -1     0     1     2     2
POSIX::ceil($x)         -1    -1    -1     0     2     2     2

(Esta tabla fue creada mediante el código de https://PerlBanjo.com/bf555d3112 ).

  • int($x) — se descarta la parte fraccionaria
  • POSIX::floor($x) — redondea siempre hacia abajo
  • int($x + 0.5) — para números positivos, funciona de acuerdo con la regla de redondeo matemático, y para los números negativos genera algún tipo de tonterías
  • sprintf('%.0f', $x) — trabaja por la regla de redondeo matemático, tanto positivos como para los negativos de los números.
  • POSIX::ceil($x) — redondea siempre hacia arriba

Redondear a varios caracteres después del punto decimal

Una de las maneras de cómo se puede redondear el número a varios caracteres después del punto decimal en Perl es utilizar sprintf("%.2f", $x).

El número de %.2f significa ¿cuánto se debe dejar de dígitos después de la coma. He aquí un ejemplo de código:

▶ Run
#!/usr/bin/perl

use feature qw(say);
use Math::Trig;

say sprintf("%.0f", pi());
say sprintf("%.1f", pi());
say sprintf("%.2f", pi());
say sprintf("%.3f", pi());
say sprintf("%.4f", pi());
say sprintf("%.5f", pi());

El resultado de su trabajo:

3
3.1
3.14
3.142
3.1416
3.14159

Métodos de redondeo en las versiones más recientes de Perl

A partir de la versión de Perl 5.22 en la entrega estándar de Perl introdujeron características POSIX::trunc() y POSIX::round(), y con la versión de Perl 5.24 es la función POSIX::lround(). Aquí hay una tabla con el resultado de la la labor de todas manerashttps://PerlBanjo.com/4314405cde ):

                        -1.8  -1.5  -1.2   0     1.2   1.5   1.8
.................................................................
int($x)                 -1    -1    -1     0     1     1     1
POSIX::trunc($x)        -1    -1    -1     0     1     1     1
POSIX::floor($x)        -2    -2    -2     0     1     1     1
int($x + 0.5)           -1    -1     0     0     1     2     2
POSIX::round($x)        -2    -2    -1     0     1     2     2
POSIX::lround($x)       -2    -2    -1     0     1     2     2
sprintf('%.0f', $x)     -2    -2    -1     0     1     2     2
POSIX::ceil($x)         -1    -1    -1     0     2     2     2

Los resultados de la POSIX::trunc($x) en esta tabla, exactamente los mismos que int($x). Y, del mismo modo los resultados de la POSIX::round($x) y POSIX::lround($x) en esta tabla exactamente lo mismo que sprintf('%.0f', $x).

Otros articulos