2016-04-29 8 views
-4

$val = 95454545.455Wie um PHP Zahlenwert mit 3 Dezimalstellen zu runden?

Wie $val abzurunden, so wird das Ergebnis 95454546 sein?

Da round() mit nur 95454545

EDIT

ceil() ist fast richtig zurück, aber wenn $val = 95454545.444, möchte ich die Funktion Rückkehr zur 95454545

Grüße, Elmer

+1

Mit was mathematischer Logik sollte '.455' um die ganze Zahl 1 und' .444' abrunden? –

+0

Die Rundungsregeln sind, wenn die Gleitkommazahl 5 oder mehr ist, dann aufzurunden, sonst Abrundung. Wenn es jedoch mehr als eine Gleitkommazahl wie $ var = 1.445 gibt, sollte die Funktion 'round()' sie auf '2' runden, da die Zahl '5' sich auf '4' -> '5' aufrundet dann wird die zweite "5" die letzte "4" -> "5" aufrunden, dann wird die dritte "5" die Zahl "1" aufrunden -> "2" –

+0

ja @HankyPanky, es sollte so sein Das. –

Antwort

0

denke ich, ich habe die Formel für diese Art von Problem gefunden. ex:

$var = 95454545.454

ich nur 0.055 Wert in es hinzuzufügen haben.

$new_var = $var + 0.055 ->$new_var = 95454545.509

$result = round($new_var) ->$result = 95454546

0

Verwenden ceil() statt dessen, die zum nächsten großen runden wird Wert,

echo ceil($val); 

UPDATE

Sie mehr Präzision mit runden() und HALF UP Flagge,

echo round(95454545.544, 0, PHP_ROUND_HALF_UP); //95454546 

echo round(95454545.44, 0, PHP_ROUND_HALF_UP); //95454545 
+0

Bitte überprüfen Sie die aktualisierte Frage, die erste, die weitere Erklärung fehlt –

+0

@JohnElmerSemaya siehe die aktualisierte Antwort hoffe, dass die Hilfe sein wird. – Vincent

+0

Keine Notwendigkeit für PHP_ROUND_HALF_UP, das ist der Standardmodus bereits. Problem ist mit der Anforderung von OP, nicht mit Ihrer Antwort. –

0

Versuchen Sie, diese ceil acheive können - Aufrunden, gibt die nächsthöhere Integer-Wert, indem der Wert bei Bedarf gerundet wird.

<?php 
$val = 95454545.455; 
$result = ceil($val); 
echo 'Result '.$result; 
?> 
+0

Bitte überprüfen Sie die aktualisierte Frage, die erste, die mehr Erklärung fehlt –

0

dieses number_format Probieren Sie es Dezimalzahlen aufrunden wird

<?php 
$val = 95454545.455; 
$result = number_format($val , 3, '.', ','); 
echo 'Result '.$result; 
<? 
+0

Dies ist das Ergebnis 'Ergebnis 95.454.545.455' –