为什么这个microtime在PHP中显得很奇怪
$start4 = microtime(true);
// run some php code
$end4 = microtime(true);
print "Time4: ". ($end4 - $start4)."<br />";
以上显示: 时间4:2.69412994385E-5
具有更复杂,更长时间运行过程的东西会显示如下: 时间1:0.000292062759399
E-5是科学记数法。当你将它与字符串值连接时似乎会发生。尝试使用number_format ......?
print "Time4: ". number_format($end4 - $start4, 10)."<br />";
//or use: printf(".10f", $end - $start)
将长数字(非常小或非常大)转换为10的幂是正常的.E-5只是意味着显示的数字乘以(10/10/10/10/10)这使得它非常少数。
0.000000000000123比1.23E-13(例如)更难阅读。
不过,如果您确实想要以其他格式查看数字:
$start = microtime(true);
$end = microtime(true);
echo "Time: ", number_format($end - $start, 50);
这将在显示的数字上添加50个十进制房屋。
希望能帮助到你!
似乎这个microtime()
显得很奇怪,因为PHP有一个阈值,在它的两边都显示一个科学记数或一个十进制表示法。这两个在技术上都是“花车”(see documentation)。
似乎这个阈值介于0.8秒和0.9秒之间;至少那是我的测试结论。使用以下代码将显示科学记数法:
$start4 = microtime(true);
sleep(0.8);
$end4 = microtime(true);
echo 'Time4: ' . ($end4 - $start4) . '<br />';
但是如果我们将等待时间改为sleep(0.9)
,则会产生十进制数。所有系统或装置都可能出现这种情况,但这至少是我的测试所显示的情况。
您可以使用sprintf()
函数自行抵消,如下所示:
$start4 = microtime(true);
sleep(0.8);
$end4 = microtime(true);
echo 'Time4: ' . sprintf('%f', $end4 - $start4) . '<br />';
这将始终将时间显示为十进制数。
别忘了float
:
number_format( (float) microtime(true), 10 );
------------------^
更新:附加到最佳答案。