下面的代码应该检查输入的数字是否是 26 的幂。在 localhost 上,比较在应该为真时评估为假,但是当它在实时 php 服务器上运行时,它按预期工作。
#there is an html text input
$foo = $_POST['someval'];
if(intval(log($foo, 26)) == floatval(log($foo, 26))) {
echo 'yup, that there number is a power of 26';
}
else {
echo 'nope, definitely not a power of 26';
}
我应该注意,在本地主机上,“如果”有时会评估为真。每隔 26 次幂就会发生这种情况(例如,26 为真,676(26 平方)为假,17576(26 立方)为真)。但是,当它在实时服务器上运行时,一切都按预期工作,并且“if”对于 26 的每个幂都为真。
我无法弄清楚是什么导致了这种差异。实时服务器正在运行 PHP 5.3.8 我尝试了两个不同的本地堆栈(mamp 和 ampps),它们分别运行 PHP 5.3.6 和 5.3.10,并且两者都发生了同样的事情。
我也尝试过编写代码,以便在“if”语句之外完成数学运算,也没有运气。
这不是一个高优先级的问题,因为代码在它应该(活)的地方工作,但它让我觉得存在差异。如果您知道发生了什么,或者您是否有更好的方法来检查一个数字是否是 26 的幂,请告诉我。