2013-10-17 22 views
4

據我所知,1微秒是百萬分之一秒(百萬分之一)。 但是,由於某種原因,我的php.exe v5.4.12 x64(CLI在Windows 7 x64上)似乎'想'它是真正的1/10000(第十萬分之一)。爲什麼PHP說微秒是1/10000秒?

如果我運行下面的PHP腳本:

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

我在屏幕上看到的計數器計數從未過去.9999。 它跳躍從1381994204.9999到1381994205.0

我要瘋了這個昨晚在寫,計算的東西到第二腳本,實現這之後,我改變了公式來劃分的microtime中(真)輸出10000,而不是100萬它的工作很完美...

+1

無論如何,你的PC時鐘並不能提供那麼高的精度。所以,即使你有這種情況 - 當下一個時間戳小於以前的http://blogs.msdn.com/b/ericlippert/archive/2010/04/08/precision-時,你可能會得到有爭議的結果-accuracy-of-datetime.aspx – zerkms

+2

@zerkms不會將「精度」與「準確度」混淆。 PC計時器很容易就是_precise_,但很少有_accurate_。 – Alnitak

+0

你爲什麼要把它分開?返回值以秒爲單位。保持秒數。 – Boann

回答

6

通過設置參數爲true,您會得到一個浮點值 - 並且精度有限。 1381994986.3488有14個顯著數字,那是你通常得到一個float

「浮點數的大小依賴於平臺的,雖然有大約14位十進制數字的精度最大數〜1.8e308是一種常見的值(64位IEEE格式)「

當沒有設置參數,你可以看到你所得到的值實際上微秒 - 但你讓他們以字符串形式。

+0

謝謝!我看到我不應該使用'微秒(真)',而只是'微秒()'。 – Alex

+1

確實有一些奇怪的設計決定,但這是因爲需要向後兼容性而不是糟糕的設計。 – ToBe

+0

@可以肯定,但是決定使用'float'而不是'double'從一開始就有缺陷。 – Alnitak

相關問題