環境:
CentOS 7.3.1611
PHP 7.1.3
程式碼:
<?php
var_dump(microtime());
var_dump(microtime(true));
輸出:
string(21) "0.23337700 1495449772"
float(1495449772.2334)
疑問:
重複運行程式碼,都是這樣的結果。
以字串的方式,輸出8位元毫秒值這個還容易理解,反正最後兩位總是0,以浮點數輸出的時候,精度被控制在了四位,這是什麼原因呢?
另外的驗證:
執行php -r "echo ini_get('precision'), PHP_EOL;"
輸出結果為14
,顯然不是php關於浮點精確度的設定影響了microtime()的輸出結果。而php.ini中也沒有搜尋到「microtime」關鍵字,看起來似乎不存在某些專門的設定影響了輸出精度。
暈中,期待達人指點。
ini_get('precision')
控制精度為 14 的意思是 :float(1495449772.2334) 全部有 14 個數字,小數點前 10位,小數點後 4 位,並不是小數點後面 14 位的意思啊。
看看小面程式碼的結果吧。