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

时间:2014-03-21 07:03:14

标签: php

我正在使用PHP日志函数[log(number,base);]我的基值是2.在某些条件下它将返回一个值-INF。然后我使用intval()函数[ intval(($value*100))/100; ]来获取整数值,但我的问题是,对于值 -INF ,函数intval返回一个值 -9.2233720368548E + 16 ,但我期待一个价值 0而不是那个。这只发生在服务器端。在我的本地Xampp服务器它运作良好。需要你的帮助解决这个问题。

2 个答案:

答案 0 :(得分:1)

您发布的小代码存在多个问题。

首先,你不应该依赖依赖某种形式的-INF的代码,而是首先捕获这种情况(例如,对于你知道log2($ x)为-INF的对数) $ x = 0,因此请检查intval($x) == 0)。

其次,您可能应该使用round()(如果您希望通过PHP完成舍入)或floor()(如果您想继续使用floor($x / 100) * 100段代码)。

第三,您的问题很可能来自于服务器是64位且您的计算机是32位系统的事实。但这只是链条的终点。如果你做得恰当,你就不会遇到这个问题。

答案 1 :(得分:0)

听起来您正在尝试创建round()功能,但为什么不使用内置功能?

$number = round($number, 2);