4 commenti php

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

avatar yurii conte

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

avatar Olimpio Romanella

Olimpio Romanella

17 March 2015 ore 19:27

@juss: metti i numeri in un array. A questo punto si tratta di estrarre un elemento casuale dell'array con la funzione array_rand()

avatar Marco

Marco

17 March 2015 ore 17:21

@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...

avatar juss

juss

13 March 2015 ore 19:12

Ma se io voglio estrarre casualmente solo i numeri 5 7 11 23 e 32 come devo impostare il codice php?