round in PHP mostra la notazione scientifica anziché il numero intero
-
20-08-2019 - |
Domanda
Sto provando a fare l'eco di una variabile contenente 1400000.
quindi c'è scritto: echo round(1400000);
questo dà 1,4E + 6 invece del numero completo.
Qualcuno ha un'idea su come visualizzarlo completamente?
Soluzione
Sembra che il problema sia stato il round.
L'ho cambiato con number_format()
e questo fa bene il lavoro.
Grazie Aron e Paul per le risposte.
Altri suggerimenti
In relazione alla tua domanda, mi sono anche imbattuto in questo commento sul sito Web di PHP.
PHP passa dal decimale standard notazione a notazione esponenziale per certo " speciale " galleggianti. Puoi vedere un elenco parziale di tale " speciale " valori con questo:
for( $tmp = 0, $i = 0; $i < 100; $i++ )
{
$tmp += 100000;
echo round($tmp),"\n";
}
Quindi, se aggiungi due float, finisci con un " speciale " valore, ad es. 1,2 E + 6, quindi metti quel valore non modificato in un aggiorna la query per memorizzare il valore in a colonna decimale, diciamo, probabilmente ottenere una transazione non riuscita, dal momento che il database vedrà " 1.2E + 6 " come varchar dati, non decimali. Allo stesso modo, lo farai probabilmente ottiene un errore di convalida XSD se hai inserito il valore in xml.
Devo essere sincero: questo è uno dei le cose più strane in cui ho visto qualsiasi lingua in oltre 20 anni di codifica, ed è un dolore colossale aggirare.
Sembra che non ci sia stata una " real " risolto ancora, ma a giudicare dai commenti in bug report a cui Paul Dixon fa riferimento in precedenza, la sua soluzione sembra funzionare.
Forse correlato a questo segnalazione di bug , quindi puoi provare
printf("%d", $myvar);