PHP intval()函数在服务器中返回不同的值


PHP intval() function returns different value in server

我使用PHP日志函数[log(number,base);]我的基值是2。在某些情况下,它将返回一个值-INF。然后我使用intval()函数[ intval(($value*100))/100; ]来获取整数值,但我的问题是,对于值-INF,函数intval返回值-9.2233720368548E+16,但我期待一个值而不是0。这只发生在服务器端。在我本地的Xampp服务器上,它工作得很好。

你发布的小代码有很多问题。

首先,你不应该依赖于依赖于某种形式的-INF的代码,而是首先抓住这种情况(例如,对于一个对数,你知道log2($x)是-INF对于$x = 0,所以检查intval($x) == 0)。

第二,您可能应该宁愿使用round()(如果您想让PHP完成舍入)或floor()(如果您想继续使用floor($x / 100) * 100代码段)。

第三,您的问题很可能是由于服务器是64位系统而您的机器是32位系统。但这只是链条的末端。如果你处理得当,就不会遇到这个问题。

这听起来像你试图创建一个round()函数,但为什么不使用内置的一个?

$number = round($number, 2);