2016-04-28 14 views
4

Gibt es einen Unterschied zwischen floor() und intval()? Obwohl beide die gleichen Ergebnisse liefern, gibt es ein Problem in Bezug auf die Leistung? Welcher der beiden ist schneller? Welches ist die richtige PHP-Funktion, wenn ich nur den ganzen Wert einer Dezimalzahl ausgeben möchte?PHP Intval vs Stock

Ziel ist hier, 199999 bis 1999 anzuzeigen, den Dezimalwert wegzulassen und nur die ganze Zahl zurückzugeben.

$num = 1999.99; 
$formattedNum = number_format($num)."<br>"; 
echo intval($num) . ' intval' . '<br />'; 
echo floor($num) . ' floor'; 
+0

NICHT die gleichen Ergebnisse: 'var_dump (intval ($ num)); var_dump (floor ($ num)); 'überprüfe auch' var_dump (intval (- $ num)); var_dump (floor (- $ num)); ' – AbraCadaver

+0

' intval() 'verwirft den Dezimalteil und gibt eine ganze Zahl zurück. 'floor()' rundet ab und gibt einen Float zurück. – Sammitch

Antwort

10

Die Funktionen ergeben unterschiedliche Ergebnisse mit negativen Brüchen.

echo floor(-0.1); // -1 
echo intval(-0.1); // 0 
+0

Jetzt sehe ich den Unterschied. Es scheint, dass Float es rundet, wenn eine negative Zahl während der Intval die ganze Zahl extrahiert (was ich anzeigen wollte) – basagabi

2

Per den docs,

Der Rückgabewert von Boden() ist nach wie vor vom Typ float, da der Wertebereich von float ist in der Regel größer als die ganzen Zahl.

Intval() gibt ein int zurück, jedoch.

0
$ratio_x = (0.70/100); 

$computation = $ratio_x * 8000; 

$noDeci = floor(($ratio_x * 8000)*1)/1; 

$intval = intval(($ratio_x * 8000)*1)/1; 

$noDeci_hc = floor((int)56*1)/1; 

echo $computation."|".$noDeci."|".$noDeci_hc."|".$intval; 

OUTPUT: 56 | 55 | 56 | 55

$ noDeci gibt 55 zurück ???