La funzione number_format

Gli argomenti di questa pagina

  • La funzione number_format()
  • La funzione sprintf()

La funzione number_format()

La funzione number_format() arrotonda al numero decimale più vicino con un numero di cifre decimali desiderato. E' possibile anche formattare un numero con le migliaia raggruppate.
Questo è lo schema della funzione

La sintassi: number_format(number [,decimals][,decimalpoint, separator])
number è obbligatorio ed indica il numero che deve essere formattato
decimals: opzionale. Specifica il numero di cifre decimali. Se è impostato questo parametro, il numero verrà formattato con un punto (.) Come punto decimale
decimalpoint: opzionale. Specifica il carattere da usare per il punto decimale
separator: opzionale. Specifica il carattere da utilizzare per separatore delle migliaia. Se viene usato questo parametro debbono essere usati anche tutti gli altri
Questa funzione supporta uno, due o quattro parametri, non tre.
Se viene indicato solo il primo parametro verrà restituito un numero intero senza decimali.

Nota: Questa funzione supporta uno, due, o quattro parametri (non tre).

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$number 
1234.567;
echo 
"Per il numero <span class=\"rosso_b\">" $number "</span><br />\n";
echo 
number_format($number) . "<br />\n";
echo 
number_format($number2','' ') . "<br />\n";
echo 
number_format($number3','' ') . "<br />\n";
echo 
number_format($number2',''.') . "<hr />\n";
$number 1234.5678;
echo 
"Per il numero <span class=\"rosso_b\">" $number "</span><br />\n";
echo 
number_format($number) . "<br />\n";
echo 
number_format($number2'.''') . "<br />\n";
echo 
number_format($number3','' ') . "<br />\n";
echo 
number_format($number2',''.') . "<br />\n";
?>

 

Per il numero 1234.567
1,235
1 234,57
1 234,567
1.234,57
Per il numero 1234.5678
1,235
1234.57
1 234,568
1.234,57

 

La funzione sprintf()

La funzione sprintf() restituisce una stringa formattata. Ma senza andare in discorsi complessi sulla formattazione delle stringhe in genere rimaniamo sella semplice formattazione dei numeri, che qui più ci interessa.

La sintassi: sprintf(format, stringa)
format: obbligatorio, specifica il tipo di formattazione da dare alla stringa in esame. I vari formati li vedremo qui sotto
stringa: obbligatorio, è la stringa da dormattare

Questo è l'elenco dei parametri per format

%b: stampa rappresentazione binaria
%c: stampa rappresentazioen ASCII
%d:stampa valore decimale con segno solo se negativo
%e: valore decimale nella notazioen scientifica (1.2e+34)
%f: valore decimale, stampa tenendo conto delle impostazioni locali
%F: valore decimale, stampa senza tenere conto delle impostazioni locali
%o: stampa rappresentazione ottale
%s: valore della stringa
%u: stampa valore decimale senza segno
%x: stampa valore esadecimale in lettere minuscole
%X: stampa valore esadecimale in lettere maiuscole
%+d: stampa valore decimale con segno

Qui sotto un breve frammento di codice che illustra in due maniere differento come usare la funzione sprintf().

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<?php
//    primo esempio 
$valori = array (
63.53342402,
63.48956246,
38.7747401,
38.46072359,
69.7090379,
69.4140327,
72.79048002,
72.36195316,
73.56401868,
73.05623686,
-
23.76711166,
-
23.29245825,
64,
"48.29816544",
"test57.64782119",
"36.27934206test"
);
echo 
"<table class=\"tabella_it\">\n";
echo 
"<tr>\n";
echo 
"<th>Il numero</th>\n";
echo 
"<th>sprintf(\"%d\", \$num)</th>\n";
echo 
"<th>sprintf(\"%.2f\", \$num)</th>\n";
echo 
"</tr>\n";
for (
$i 0$i count ($valori); $i++) {
    
$val_1 sprintf("%d"$valori[$i]);
    
$val_2 sprintf("%.2f"$valori[$i]);
    echo 
"<tr>\n";
    echo 
"<td>" $valori[$i] . "</td>\n";
    echo 
"<td>" $val_1 "</td>\n";
    echo 
"<td>" $val_2 "</td>\n";
    echo 
"</tr>\n";
}
echo 
"</table>\n";

//    secondo esempio con tutti i possibili valori per il primo argomento della funzione
echo "Altre possibili formattazioni:<br />\n";
$num1 123456789;
$num2 = -123456789;
$char 65// Il carattere che corrisponde al codice ASCII 65: A
echo sprintf("%b",$num1)."<br />\n"// numero binario
echo sprintf("%c",$char)."<br />\n"// rappresentazioen ASCII del numero
echo sprintf("%d",$num1)."<br />\n"// valore decimale senza segno se positivo
echo sprintf("%d",$num2)."<br />\n"// valore decimale senza segno se positivo
echo sprintf("%e",$num1)."<br />\n"// notazioen scientifica (minuscolo)
echo sprintf("%E",$num1)."<br />\n"// notazioen scientifica (maiuscolo)
echo sprintf("%u",$num1)."<br />\n"// valore decimale senza segno
echo sprintf("%u",$num2)."<br />\n"// valore decimale senza segno
echo sprintf("%f",$num1)."<br />\n"// numero decimale tenendo conto delle impostazioni locali
echo sprintf("%F",$num1)."<br />\n"// numero decimale senza tenere conto delle impostazioni locali
echo sprintf("%g",$num1)."<br />\n"// Pi├╣ corto di %e e %f
echo sprintf("%G",$num1)."<br />\n"// Pi├╣ corto di %E e %f
echo sprintf("%o",$num1)."<br />\n"// rappresentazione ottale di un numero
echo sprintf("%s",$num1)."<br />\n"// stringa
echo sprintf("%x",$num1)."<br />\n"// valore esadecimale in lettere minuscole
echo sprintf("%X",$num1)."<br />\n"// valore esadecimale in lettere maiuscole
echo sprintf("%+d",$num1)."<br />\n"// valore decimale con segno
echo sprintf("%+d",$num2)."<br />\n"// valore decimale con segno
?>

Qui invece si vede il codice sopra descritto in azione:

Il numero sprintf("%d", $num) sprintf("%.2f", $num)
63.53342402 63 63.53
63.48956246 63 63.49
38.7747401 38 38.77
38.46072359 38 38.46
69.7090379 69 69.71
69.4140327 69 69.41
72.79048002 72 72.79
72.36195316 72 72.36
73.56401868 73 73.56
73.05623686 73 73.06
-23.76711166 -23 -23.77
-23.29245825 -23 -23.29
64 64 64.00
48.29816544 48 48.30
test57.64782119 0 0.00
36.27934206test 36 36.28

Altre possibili formattazioni:

Il numero Sintassi Risultato Descrizione
123456789 sprintf("%b",123456789) 111010110111100110100010101 Numero binario
65 sprintf("%c",65) A carattere ascii
123456789 sprintf("%d",123456789) 123456789 numero decimale senza segno se positivo
-123456789 sprintf("%d",-123456789) -123456789 numero decimale senza segno se positivo
123456789 sprintf("%e",123456789) 1.234568e+8 Notazione scientifica minuscolo
123456789 sprintf("%E",123456789) 1.234568E+8 Notazione scientifica maiuscolo
123456789 sprintf("%u",123456789) 123456789 Numero con segno
-123456789 sprintf("%u",-123456789) 18446744073586094827 Numero con segno
123456789 sprintf("%f",123456789) 123456789.000000 Numero in virgola mobile (impostazioni locali)
123456789 sprintf("%.2f",123456789) 123456789.00 Numero in virgola mobile (numero a 2 decimali)
123456789 sprintf("%.3f",123456789) 123456789.000 Numero in virgola mobile (numero a 3 decimali)
123456789 sprintf("%F",123456789) 123456789.000000 Numero in virgola mobile (non impostazioni locali
123456789 sprintf("%g",123456789) 1.23457e+8 Più corto di %e e %f
123456789 sprintf("%G",123456789) 1.23457E+8 Più corto di %E e %f
123456789 sprintf("%o",123456789) 726746425 Numero ottale
123456789 sprintf("%s",123456789) 123456789 Stringa
123456789 sprintf("%x",123456789) 75bcd15 Numero esadecimale (minuscolo)
123456789 sprintf("%X",123456789) 75BCD15 Numero esadecimale (maiuscolo)
123456789 sprintf("%+d",123456789) +123456789 Viene specificato il segno
-123456789 sprintf("%+d",-123456789) -123456789 Viene specificato il segno

 

 



settore tecnico il sito di lorettabweb il Forum di sostegno
il forum il forum il forum