为什么PHP说一微秒是1/10000秒?

为什么PHP说一微秒是1/10000秒?,php,Php,据我所知,微秒是1/1000000秒(百万分之一秒)。 然而,出于某种原因,我的php.exe v5.4.12 x64(windows 7 x64上的CLI)似乎“认为”它实际上是1/10000(千分之一) 如果我运行以下php脚本: <?php while(true) { echo microtime(true)."\r"; } ?> 我在屏幕上看到的计数器从不超过.9999。 它从1381994204.9999跳到1381994205.0 昨晚我写了一个脚本,计算了

据我所知,微秒是1/1000000秒(百万分之一秒)。 然而,出于某种原因,我的php.exe v5.4.12 x64(windows 7 x64上的CLI)似乎“认为”它实际上是1/10000(千分之一)

如果我运行以下php脚本:

<?php
while(true)
{
    echo microtime(true)."\r";
}
?>

我在屏幕上看到的计数器从不超过.9999。 它从1381994204.9999跳到1381994205.0


昨晚我写了一个脚本,计算了一秒钟的时间,当时我简直疯了。意识到这一点后,我改变了公式,将微时间(真)输出除以10000,而不是1000000,它工作得非常好…

通过将参数设置为
,您得到的是一个浮点值,但精度有限
1381994986.3488有14个有效数字,这是您通常使用的:

浮点数的大小取决于平台,尽管最大值约为1.8e308,精度约为14位十进制数字是一个常见值(64位IEEE格式)


当不设置参数时,您可以看到您得到的值实际上是微秒,但您得到的是字符串形式的值。

您的电脑时钟无论如何都不能提供那么高的精度。因此,即使你有这样的想法——当下一个时间戳小于之前的@zerkms时,你也有可能得到有争议的结果。不要混淆“精度”和“准确性”。PC定时器可以很容易做到如此精确,但却很少做到如此精确。你为什么要把它除以任何东西呢?返回值以秒为单位。留着别说了。@Alnitak:这可能是语言问题。我实际上是指“准确度”(或者“分辨率”——如果我没有再次混淆术语的话)。不管怎样,谢谢你的更正。首先阅读文档怎么样?谢谢!我知道我不应该使用“微秒(true)”,而应该使用“微秒()”istead。确实有一些奇怪的设计决策,但是这一决策是由于需要向后兼容和不错的设计。@当然,但是使用
float
而不是
double
的决策从一开始就是有缺陷的。完全正确!因为这个原因,以前不得不使用那些庞大的bc函数。@Alnitak PHP的浮点和双精度浮点是相同的64位(双精度)类型。