Arrondir les nombres en Perl

Dans le langage de programmation Perl, il ya plusieurs façons que vous pouvez arrondir un nombre entier.

En fonction de ce que vous devez obtenir à la fin vous devez utiliser différentes méthodes. Lors de la sélection de l'arrondissement il est intéressant de prêter attention à ce que doivent arrondis les nombres négatifs.

Voici un tableau indiquant les résultats des différentes méthodes d'arrondi. Tous les ces moyens pour arrondir disponibles en Perl de la boîte, si vous avez Perl, vous pouvez utiliser l'une de ces façons.

                        -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

(Ce tableau a été créé à l'aide du code https://PerlBanjo.com/bf555d3112 ).

  • int($x) — jeté la partie fractionnaire
  • POSIX::floor($x) — arrondit toujours vers le bas
  • int($x + 0.5) — pour les nombres positifs fonctionne selon la règle de l'arrondi mathématique, et pour les nombres négatifs, émet une sorte de non-sens
  • sprintf('%.0f', $x) — fonctionne selon la règle de l'arrondi mathématique, comme pour le positif, et pour les nombres négatifs.
  • POSIX::ceil($x) — arrondit toujours plus haut

Arrondir à plusieurs caractères après la virgule

Une des façons que vous pouvez arrondir un nombre à plusieurs caractères après la virgule en Perl il est à utiliser sprintf("%.2f", $x).

Nombre %.2f dire combien il faut laisser les chiffres après la virgule. Voici un exemple de code:

▶ 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());

Le résultat du travail:

3
3.1
3.14
3.142
3.1416
3.14159

Les moyens d'arrondi dans les versions les plus récentes de Perl

À partir de c de la version de Perl 5.22 standard de Perl est apparu fonction POSIX::trunc() et POSIX::round(), et avec la version de Perl 5.24 la POSIX::lround(). Voici un tableau avec le résultat le travail de toutes les façonshttps://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

Les résultats POSIX::trunc($x) dans ce tableau sont exactement les mêmes que int($x). Et exactement les mêmes résultats POSIX::round($x) et POSIX::lround($x) dans ce tableau exactement les mêmes que sprintf('%.0f', $x).

Autres articles