这两个PHP方程有什么显着差异?

时间:2013-12-21 20:04:08

标签: math integer floor

工作示例:http://ideone.com/Ond6PY

您有两个变量,即$a = 5$b = 9

这两个陈述之间有哪些主要的数学差异?

floor(floor($a / $b) - .5); //output: -1

(int)((int)($a / $b) - .5); //output: 0

2 个答案:

答案 0 :(得分:3)

查看表达部分的四舍五入。

5/9的划分是

$a / $b = 5 / 9 = 0.555555556

所以请参阅http://php.net/manual/en/function.floor.php

floor(1.5) = 1
floor(-1.5) = -2

然后

floor(floor($a / $b) - .5) = floor(floor(0.555555556)) = floor(0 - .5) = floor(-.5) = -1

和第二种情况 见http://www.php.net/intval

(int) 4.32 = 4

然后

(int)((int)($a / $b) - .5) = (int)((int)(0.555555556) - .5) = (int)(0 - .5) = int(-0.5) = 0;

答案 1 :(得分:-2)

(int)是一个类型转换,你得到一个整数,例如地板向下滚动2,3,5等。

所以(int)((int) 5 / 9)-0.5)得到:

  

0 - 0(0.56666666)= 0

(int)不是函数!看这里:Type Casting - PHP DOC