0

我在两台不同的服务器上运行相同的代码,我得到了不同的结果。我不确定我需要改变什么来解决这个问题。

我正在使用时间戳,并且正在使用以下内容。

$timestamp = round(microtime(true) * 1000);
echo $timestamp;

当我从运行 PHP 5.4.16 的本地测试服务器执行此操作时,我得到如下值:1376732353181

当我从运行 PHP 5.3.6 的实时服务器上运行相同的东西时,我的值如下:1.37673257778E+12

我需要我的实时服务器以与我的测试服务器相同的方式运行,我不确定是什么导致了这种差异。

问题似乎发生在乘以 1000 并得到一个大数字的时候。我的本地服务器给了我一个常规数字,而另一台服务器给我一个小数点,最后是 E+12。忘记叫什么了。。??不过我不想要。

任何有关这方面的信息将不胜感激。谢谢!

4

2 回答 2

2

您可以使用 intval 来避免获得浮点表示(如果您的 PHP 是 64 位)

PHP 32 位不能存储大于 2147483647 的 int(感谢 Jon),所以请注意这一点。如果无论环境如何,您都需要它做出相同的反应,那么也许您应该对它们都使用浮点数。

希望有帮助。

于 2013-08-17T10:01:15.137 回答
0

您可以强制使用十进制数字表示结果

printf("%.0f", round(microtime(true) * 1000));

sprintf如果您希望将结果放入变量中,也可以这样做。

于 2013-08-17T10:14:57.413 回答