L'arrotondamento dei numeri in Perl

Nel linguaggio di programmazione Perl ci sono diversi modi come è possibile arrotondare il numero prima di tutto.

A seconda di ciò che è necessario per ottenere il risultato, è necessario utilizzare diversi modi. Quando si seleziona il metodo di arrotondamento vale la pena di prestare attenzione a come dovrebbe arrotondato i numeri negativi.

Ecco una tabella in cui vengono visualizzati i risultati di differenti modi di arrotondamento. Tutti questi metodi di arrotondamento sono disponibili in Perl, fuori dalla scatola, se avete Perl, si è possibile utilizzare qualsiasi di questi modi.

                        -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

(Questa tabella è stata creata utilizzando il codice https://PerlBanjo.com/bf555d3112 ).

  • int($x) — scartato la parte frazionaria
  • POSIX::floor($x) — arrotonda sempre giù
  • int($x + 0.5) — per i numeri positivi di esecuzione secondo la regola matematica di arrotondamento, e per i numeri negativi emette una sorta di sciocchezze
  • sprintf('%.0f', $x) — esecuzione secondo la regola matematica arrotondamento, come per positivi e per i numeri negativi.
  • POSIX::ceil($x) — arrotonda sempre verso l'alto

L'arrotondamento fino a pochi caratteri dopo il punto e virgola

Uno dei modi in cui è possibile arrotondare il numero fino a pochi caratteri dopo il punto e virgola in Perl si tratta di utilizzare sprintf("%.2f", $x).

Il numero di %.2f significa quanto necessario lasciare cifre dopo la virgola. Ecco un esempio di codice:

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

Il risultato del lavoro:

3
3.1
3.14
3.142
3.1416
3.14159

Metodi di arrotondamento freschi versioni di Perl

A partire dalla versione di Perl 5.22 nella fornitura standard di Perl è apparso funzione POSIX::trunc() e POSIX::round(), e con la versione di Perl 5.24 apparso funzione POSIX::lround(). Ecco la tabella con il risultato di lavoro tutti i modi (https://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

Risultati POSIX::trunc($x) in questa tabella esattamente come int($x). E allo stesso modo i risultati POSIX::round($x) e POSIX::lround($x) in questa tabella esattamente come sprintf('%.0f', $x).

Altri articoli