28 Feb 2011 4 commenti
La gestione e manipolazione dei dati numerici è un operazione molto diffusa e che può essere gestita atraverso l'utilizzo di alcune funzioni. In altra sede si è già parlato della sintassi che che devono assumere la variabili numeriche e delle funzioni per il controllo dei dati numerici. In questa sede vedremo come generare numeri casuali, come eseguire arrotondamenti e come formattare i numeri.
NUMERI CASUALI
Per generale numeri casuali con php la funzione da impiegare è rand(): essa accetta due parametri opzianali, il valore minimo e il valore massimo.
Di default il valore minimo è 0 mentre quello massimo è conoscibile tramite la funzione getrandmax().
<?php echo rand(1,10); // un numero casuale compreso fra 1 e 10 ?>
Nel caso in cui si desideri un numero casuale con un determinato numero di cifre:
<?php function random_number($cifre) { $max_value = bcpow(10, $cifre)-1; $min_value = bcpow(10, $cifre-1); //echo $min_value. ' - ' .$max_value . '<br />'; return rand($min_value, $max_value); } echo random_number(3); // numero casuale di 3 cifre ?>
ARROTONDAMENTI
Per eseguire gli arrotondameni di numeri decimali php mette a disposizione tre funzioni:
- ceil(): arrotonda per eccesso ad un numero intero;
- floor(): arrotonda per difetto ad un numero intero;
- round(): essa a differenza delle precedenti esegue un arrottondamento che avviene per difetto o per eccesso a seconda delle cifre scartate; essa prevede 3 parametri di cui due opzionali; il primo parametro, obbligatorio, è il numero da arrotondare; il secondo, opzionale è il numeri di cifre decimali (dopo la virgola) da conservare, di default pari a zero; il terzo serve per gestire gli arrotondamenti incerti in virù del fatto che terminano per 5 (vedi esempio), di default PHP_ROUND_HALF_UP.
<?php echo ceil(2.35); // 3 echo floor(2.35); // 2 echo round(2.35); // 2 echo round(2.65); // 3 echo round(2.35, 1); // 2.4 echo round(2.35, 1, PHP_ROUND_HALF_UP); // 2.4 echo round(2.35, 1, PHP_ROUND_HALF_DOWN); // 2.3 echo round(2.35, 1, PHP_ROUND_HALF_EVEN); // 2.4 echo round(2.35, 1, PHP_ROUND_HALF_ODD); // 2.3 ?>
FORMATTAZIONE DEI NUMERI
A fini di visualizzazione si ha la necessità di far si che i numeri abbiano una determinata formattazione. Ad esempio separare le migliaia con un punto (o con uno spazio) e/o i decimali con una virgola. A questo scopo la funzione che è destinata a tale scopo è number_format(). Essa accetta uno, due o quattro parametri (non 3). Il primo è il numero che si vuole formattare. Il secondo parametro serve ad impostare il numero di decimali da considerare, di default è 0 (zero) e quindi il numero sarà formattato senza decimali. Il terzo serve per impostare il carattere separatore tra la parte intera e quella decimale, di default è il punto.Il quarto parametro serve per impostare il carattere separatore nelle migliaia, di default è la virgola.
Attenzione: il terzo e il quarto parametro accettano un unico carattere separatore (un unico byte).
Giova inoltre sottolineare che la funzione darà come return una stringa la quale non è utilizzabile per eseguire operazioni matematiche successive. E' una funzione che, quindi, deve essere impiegata principalmente nella stampa a video. Vediamone di seguito alcuni esempi:
<?php $numero = 1120.2536; $num1 = number_format($numero); // 1,120 $num2 = number_format($numero, 2); // 1,120.25 $num3 = number_format($numero, 2, ',', ' '); // 1 120,25 $num4 = number_format($numero, 2, ',', '.'); // 1.120,25 ?>
Olimpio Romanella
Sono un appassionato di Web Developing con un particolare debole per php. Mi dedico principalmente dello sviluppo back-end ed in particolare programmazione lato server con php, sviluppo di database relazionali MySql e progettazione di CMS di piccole e medie dimensioni.
Mi avvalgo del framework javascript Jquery, utilizzando molti dei suoi plugin e nei dei miei progetti utilizzo spesso il framework MVC Codeigniter.
4 Commenti presenti
@juss: metti i numeri in un array. A questo punto si tratta di estrarre un elemento casuale dell'array con la funzione array_rand()
@juss:
se vuoi fare con il random credo che devi fare due numeri alla volta...ma a me hanno detto che devi utilizzare un altro linguaggio...
Ma se io voglio estrarre casualmente solo i numeri 5 7 11 23 e 32 come devo impostare il codice php?
yurii conte
25 May 2021 ore 18:00
Ciao non so se puoi ancora rispondere ma volevo chiederti come potrei ottenere da un numero decimale come questo 25.03 il seguente risultato 25.0