Nwlapcug.com


Modalità di arrotondamento in un valore Integer in Perl

Perl non dispone di una funzione incorporata, specificamente progettata per arrotondare i numeri a virgola mobile in numeri interi, ma è possibile scrivere una propria funzione che incorpora la funzione sprintf per arrotondare questi numeri all'intero più vicino. La funzione sprintf accetta due argomenti, un formato e un elenco. La lista è semplicemente il numero che si desidera arrotondare verso l'alto o verso il basso. Utilizzare "%.0f" come il formato, che indica alla funzione che il numero è virgola e si desidera arrotondare ad un zero cifre dopo la virgola decimale.

Istruzioni

1

Aprire un file di programma Perl. Digitare il seguente codice:

Sub intCheck {

mio $num = shift;

ritorno ($num = ~ m / ^ \d + $/);

}

Questo crea una funzione denominata "intCheck" che in primo luogo ottiene un argomento passato ad esso e viene salvato in una variabile denominata "$num", quindi restituisce "true" se tale numero è un numero intero o "false" se non è.

2

Digitare il seguente codice:

Sub {rotondo

mio $var = shift;

Se (intCheck ($var - 0,5)) {$var = $var + 0,1;}

ritorno sprintf ("%.0f", $var);

}

Questo crea una funzione denominata "rotondo". Ottiene l'argomento passato ad esso e lo salva nella variabile "$var". Quindi chiama la funzione intCheck e passa il variabile numero meno 0,5. Se la funzione intCheck restituisce "true", il $var ha 0,1 aggiunto ad esso. Quindi la funzione ARROTONDA arrotonda la variabile al numero intero più vicino e lo restituisce.

3

Digitare il seguente codice:

stampa round(4.49). "\n";

stampa round(4.51). "\n";

stampa round(4.5). "\n";

Queste linee di prova la funzione ARROTONDA. La prima riga Arrotonda per difetto a quattro e le due righe rotondo fino a cinque.

4

Salvare il file Perl.

Consigli & Avvertenze

  • La funzione sprintf funziona per arrotondare i numeri a virgola mobile a valori integer quasi perfettamente. Tuttavia, quando un numero è esattamente a metà tra due numeri interi, arrotonda per difetto invece di fino. Sottraendo 0,5 dal numero finisce per passare questo numero intCheck, intCheck restituisce "true", che significa che conosce la funzione arrotonda per arrotondare anziché verso il basso.
  • È possibile modificare questa funzione per arrotondare i numeri a virgola mobile a qualsiasi numero di posizioni decimali. Elimina il se istruzione dal turno funzione e modificare "%.0f" a "%.1f" per arrotondare alla prima cifra decimale, o "%.2f" per arrotondare a due cifre decimali e così via.