Mat*_*tte 0 php if-statement equality
如何才能实现以下目标:
$varnum = 4;
if( $varnum/4 - floor($varnum/4) !== 0){
echo 'foo';
}
Run Code Online (Sandbox Code Playgroud)
这与运行PHP 5.1.6的服务器上的'foo'相呼应.如果我改变操作员,==我得到相同的结果.
我不知道为什么,但可能是因为"=="是"等于"而"!=="是"不相同"?那怎么会让它们相同呢?我想在javaScript中我会"parseInt",但在PHP中没有这样的东西,对吧?
这个失败的原因是因为在PHP中,floor函数返回a float,尽管该值总是一个整数.您可以在此处的文档中看到这一点:http://php.net/manual/en/function.floor.php
您正在将该浮点数的固定类型比较与整数零进行比较,因此无论该值是否实际为零,结果都为false.
为了解决这个问题,要么:
floor转换为整数 - intval(float(...))或者(int)float(..)!=而不是!==.0.0而不是仅仅0比较.如果你想知道为什么floor()会返回一个浮点而不是一个整数,那是因为输入是一个浮点数.float数据类型具有比整数更大的可能范围,因此可以调用floor()一个太大而不能保存在整数中的值.因此,函数返回整数是不安全的; 它返回一个浮点数,以便它可以保证结果是正确的.
乍一看似乎很奇怪,但希望这能为你解释它背后的逻辑.