Numeri Interi e Float - Tipi di dati in PHP

Numeri Interi e Float - Tipi di dati in PHP

In PHP, i tipi di dati interi (integer) rappresentano numeri interi senza decimali. Possono essere positivi, negativi o zero.

Il tipo di dato float (abbreviazione di "floating point") rappresenta un numero a virgola mobile. In altre parole, è un tipo di dato utilizzato per rappresentare valori numerici con decimali.

// Interi (integer)
$numero_intero = 8;

// Float (float)
$numero_decimale = 9.15;

// Stringa 
$stringa = 'testo';
$stringa_num ='5';

Come controllare la tipologia di dati:

Per controllare se una variabile è di un certo tipo, PHP ci mette a disposizione una serie di funzioni native ad esempio, se vogliamo sapere se una variabile contiene un valore numerico valido, possiamo usare la funzione is_numeric()

$test_num_int = is_numeric($numero_intero);
$test_num_dec = is_numeric($numero_decimale);
$test_num_str = is_numeric($stringa);
$test_num_str_num = is_numeric($stringa_num);

var_dump($test_num_int); //output : bool(true)
var_dump($test_num_dec); //output : bool(true)
var_dump($test_num_str); //output : bool(false)
var_dump($test_num_str_num); /* output : bool(true) : ↓ 
/* questo perchè PHP è un linguaggio dinamicamente tipizzato,
quindi nonostante 5 sia racchiuso negli apici e quindi è una
stringa a tutti gli effetti, PHP lo rileva come un numero di tipo stringa.
*/

Controllo su numero intero o decimale:

Per controllare se una variabile è intera o decimale, PHP ci mette a disposizione le funzioni:

  • is_int() - per cotrollare se è un numero intero;
  • is_float() - per controllare se è un numero decimale;
//controllo numeri interi
$controllo_num_int = is_int($numero_intero);
$controllo_num_dec = is_int($numero_decimale);

var_dump($controllo_num_int); // output: bool(true) : è vero perchè è un numero intero
var_dump($controllo_num_dec);// output: bool(false) : è falso perchè è un numero decimale

//controllo numeri decimali
$controllo_num_int_2 = is_float($numero_intero);
$controllo_num_dec_2 = is_float($numero_decimale);

var_dump($controllo_num_int_2); // output: bool(false) : è falso perchè è un numero intero
var_dump($controllo_num_dec_2); // output: bool(true) : è vero perché è un numero decimale

Operazioni Aritmetiche

Per effettuare operazioni aritmetiche tra valori numerici o tra variabili che contengono valori numerici utilizziamo gli operatori aritmetici di PHP, ad esempio : + - / %

// esempio addizione 
echo 2 + 1.5; // output : 3.5
// esempio sottrazine
echo 2 - 1.5; // output : 0.5
// esempio moltiplicazione
echo 2 * 1.5; // output : 3
// esempio divisione
echo 2 / 1.5; // output : 1.33
// esempio di modulo (parte intera rimanente di una divisione)
echo 10 % 3 ; // output : 1.33
// esempio elevazione numero ad una potenza
echo 2 ** 3 ; // output : 8

Confronto tra numeri float

Quando facciamo un confronto dei numeri float dobbiamo prestare attenzione, poiché dobbiamo mettere in considerazione che il nostro dispositivo ragiona in termini binari (stesso standard di javascript) e non aritmetici come verrebbe naturale a noi esseri umani. Facciamo un esempio:

<?php 
// confronto tra numeri float

$x = 0.1 + 0.2;
$y = 0.3;

$test = $x  == $y ; 
var_dump($test); // output: bool(false)
?>

Come possiamo vedere nonostante per noi il valore di $x ed $y siano uguali, per PHP non è cosi (poiché ragiona in termini binari), quindi se stiamo costruendo un applicazione dove bisogna confrontare due numeri con virgola e vogliamo essere sicuri, dobbiamo aggirare il problema.

Se vogliamo confrontare in modo sicuro dei numeri float, possiamo pensare di utilizzare un delta. Cioè possiamo considerare un delta massimo entro il quale possiamo considerare i valori float uguali.

<?php 
// confronto tra numeri float

$x = 0.1 + 0.2;
$y = 0.3;

// definiamo un numero entro il quale possiamo considerare uguali i due numeri
$delta = 0.00001;
// conserviamo all'interno di una variabile la differenza in valore assoluto tra x e y 
$diff = abs($x - $y);

if($diff < $delta) {
    echo " Le variabili x e y sono uguali ";
} else {
    echo " Le variabili x e y non sono uguali";
};

?>

Arrotondare i numeri con ceil, floor e round

In PHP, possiamo arrotondare i numeri usando le funzioni ceil, floor e round. Ecco come funzionano:

  • ceil arrotonderà il numero al numero intero più vicino verso l'alto.
    Ad esempio, ceil(4.3) restituirà 5, mentre ceil(9.999) restituirà 10.
  • floor arrotonderà il numero al numero intero più vicino verso il basso.
    Ad esempio, floor(4.3) restituirà 4, mentre floor(9.999) restituirà 9.
  • round arrotonderà il numero al numero intero più vicino.
    Ad esempio, round(4.3) restituirà 4, mentre round(9.999) restituirà 10.
$num = 4.3;
echo ceil($num); // Output: 5
echo floor($num); // Output: 4
echo round($num); // Output: 4

$num = 9.999;
echo ceil($num); // Output: 10
echo floor($num); // Output: 9
echo round($num); // Output: 10

Scegliere il numero più piccolo ed il più grande in un insieme di numeri con min() e max()

Possiamo trovare il valore minimo o massimo in un insieme di numeri, come ad esempio in un array, usando le funzioni min e max. Ecco come funzionano:

  • min restituisce il valore minimo in un insieme di numeri. Ad esempio, min(4, 5, 6, 7) restituirà 4.
  • max restituisce il valore massimo in un insieme di numeri. Ad esempio, max(4, 5, 6, 7) restituirà 7.

Facciamo un esempio

$numeri = [4,5,6,7];
$minore = min($numeri);
$maggiore = max($numeri);

echo $maggiore; // Output: 7
echo $minore; // Output: 4


$altrinumeri = array(-1, -5, 0, 3);
echo min($altrinumeri); // Output: -5
echo max($altrinumeri); // Output: 3

Come generare numeri casuali all'interno di un range di numeri

Se abbiamo la necessità di creare un numero randomico all'interno di un range di numeri possiamo utilizzare la funzione rand() integrata di PHP. Facciamo un Esempio:

$numero_casuale = rand(5,100);
echo $numero_casuale; // output : numero casuale tra 5 e 100 (5 e 100 inclusi)

Scritto da Donato Pirolo

Ciao, sono Donato, frontend developer con una smisurata passione per la SEO. Creo strumenti ad hoc per aiutare aziende e professionisti ad essere cercati sul web e trovare clienti.

Potrebbero interessarti

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Copyright © 2022
linkedin facebook pinterest youtube rss twitter instagram facebook-blank rss-blank linkedin-blank pinterest youtube twitter instagram