Si ok, la precisione del float è di 14 decimali, ammetto che non avevo letto quella pagina..
A me però ne servono solo 6, o meglio, 2 quando stampo il numero.
Spiegami perchè i decimali di questi due numeri sono diversi:
Codice PHP:
$primo = number_format(2.715, 2, '.', '');
var_dump($primo);
//string(4) "2.7[b]2[/b]"
$secondo= number_format(262.715, 2, '.', '');
var_dump($secondo);
//string(6) "262.7[b]1[/b]"
Ho notato che con qualsiasi numero < 256 l'approssimazione dei decimali 0.715 la restitiusce come 0.72 (approssima quel 0.005 in eccesso, come è giusto che sia d'altronde).
Se invece il numero è maggiore di 256, considera lo 0.005 in difetto, restituendo 0.71.
Questo mi causa un bel pò di problemi, per delle semplici somme:
Codice PHP:
$a = 163.2;
$b = 32.4;
$c = 14.4;
$d = 50;
$e = 2.715;
$a_stampa = number_format($a, 2, ',', '');
$b_stampa = number_format($b, 2, ',', '');
$c_stampa = number_format($c, 2, ',', '');
$d_stampa = number_format($d, 2, ',', '');
$e_stampa = number_format($e, 2, ',', '');
//number_format restituisce delle stringhe.
printf("Sommo %s + %s + %s + %s + %s", $a_stampa, $b_stampa, $c_stampa, $d_stampa, $e_stampa);
$somma = $a + $b + $c + $d + $e;
$somma_stampa = number_format($somma, 2, ',', '');
printf("
Il risoltato: %s", $somma_stampa);
//Output:
//Sommo 163,20 + 32,40 + 14,40 + 50,00 + 2,72
//Il risoltato: 262,71
Quel 0.715 è un problema.
Perchp se l'intero è < 256 lo arrotonda correttamente, altrimenti in difetto!?