在使用microtime() (使用PHP 5)记录一些数据时,我遇到了一些与我的日志文件的时间戳有点不一致的值,所以我只是尝试用一个简单的脚本比较time()和microtime()的输出(这里只是为了限制数据输出):
<?php
for($i = 0; $i < 500; $i++) {
$microtime = microtime();
$time = time();
list($usec, $sec) = explode(" ", $microtime);
if ((int)$sec > $time) {
echo $time . ' : ' . $microtime . '<br>';
}
usleep(50000);
}
?>现在,由于microtime在$time之前声明,我希望它更小,并且不应该输出任何内容;然而,显然不是这样,并且$time时不时地小于从microtime()返回的秒数,如下面的示例(截断)输出:
1344536674 : 0.15545100 1344536675
1344536675 : 0.15553900 1344536676
1344536676 : 0.15961000 1344536677
1344536677 : 0.16758900 1344536678现在,这只是一个很小的差距;然而,我观察到一些序列的差异(相当)超过一秒……那么,这怎么可能呢?
发布于 2013-03-06 18:27:09
这可能是因为microtime()使用浮点数,因此使用rounding errors may occur。
您可以指定floating point numbers' precision in php.ini
https://stackoverflow.com/questions/11889809
复制相似问题