Originariamente inviato da silverwings
se stampo mi risulta 20.00 invece di 20.50 come mai?
perche' fa un cast ad intero, visto che invii una stringa ... almeno inviala corretta, ovvero senza la virgola che non e' niente per un numero di php

$prezzo = '20.50';
$prezzo = number_format($prezzo, 2, '.', ',');

20 PUNTO 50, non 20 virgola 50

se invii da un form fai cosi'


$prezzo = number_format(str_replace(',', '.', trim($prezzo)), 2, '.', ',');