Penso che il problema chiave sia la definizione di quante posizioni sono necessarie. Definiresti 13,01 come 13 perché il primo decimale era uno 0? Dal momento che printf e il formato numerico ti richiedono di sapere quanti decimali, non so che questo potrebbe funzionare per te.
Forse qualcosa del genere (che è un sacco di funzioni, ma cerca il primo 0, e quindi restituisce la stringa troncata). Sì, è intenso, ma potrebbe essere il modo migliore per te.
function show_number($number, $max = 8){
if(strpos($number, '.')){
$decimal = strpos($number, '.');
if(strpos($number, '.0')){
return substr($number, 0, $decimal);//returns whole if zero is first
} else {
if(strpos(substr($number, $decimal, $max), '0')){
$zero = strpos(substr($number, $decimal, $max), '0');
return substr($number, 0, $decimal+$zero);//returns number w/0 first zero
} else {
return substr($number, 0, $decimal+$max+1); //returns number with max places
}
}
} else {
return $number; //returns number if no decimals
}
}
Hai provato a usare round () invece di number_format()? –
A mio avviso, number_format deve essere utilizzato solo a scopo di visualizzazione. – kta