2016-06-28 13 views
1

Ich habe eine Berechnung, die diese double: 6.4971508379888 zurückgibt. Wenn ich es auf float umwandle und es stimme, ist es die gleiche Nummer. Ich will (nicht rund) zur Anzeige der Zahl mit nur zwei Dezimalstellen, also habe ich versucht:Unerwartetes Ergebnis für number_format und sprintf beim Versuch, Nummer mit zwei Dezimalstellen anzuzeigen

number_format((float)$number, 2, '.', '') 

und

sprintf('%0.2f', (float)$number) 

aber in beiden Fällen I 6,50 statt 6,49 sehen. Warum passiert dies?

Antwort

1

PHP automatisch um den Wert auf der Grundlage gegebener Präzision

Wenn Sie Ihre erwarteten Ergebnisse wollen dann den folgenden Code folgen.

$precision = 2; 
$number = floor($number * pow(10,$precision))/pow(10,$precision); 
echo number_format((float)$number, $precision, '.', ''); 
+0

Danke, das ist in der Tat, wie ich es gelöst habe. Ich habe mich gefragt, warum num_format und sprintf so funktionieren. Ich habe gerade number_format anscheinend Runden herausgefunden, aber es ist nicht gut dokumentiert. Bist du dir nicht sicher über sprintf? – magnetronnie

+0

@magnetronnie willkommen :-) –