環(huán)境:
CentOS 7.3.1611
PHP 7.1.3
代碼:
<?php
var_dump(microtime());
var_dump(microtime(true));
輸出:
string(21) "0.23337700 1495449772"
float(1495449772.2334)
疑問:
反復運行代碼,都是這樣的結(jié)果。
以字符串的方式,輸出8位毫秒值這個還容易理解,反正最后兩位總是0,以浮點數(shù)輸出的時候,精度被控制在了四位,這是什么原因呢?
另外的驗證:
執(zhí)行php -r "echo ini_get('precision'), PHP_EOL;"
輸出結(jié)果為14
,顯然不是php中關(guān)于浮點精度的設(shè)置影響了microtime()的輸出結(jié)果。而php.ini中也沒有搜索到“microtime”關(guān)鍵字,看起來似乎不存在某些專門的設(shè)置影響了輸出精度。
暈中,期待達人指點。
ini_get('precision')
控制精度為 14 的意思是 :
float(1495449772.2334) 全部有 14 個數(shù)字,小數(shù)點前 10位,小數(shù)點后 4 位,并不是小數(shù)點后面 14 位的意思啊。
看看小面代碼的結(jié)果吧。
ini_set('precision', 18);
var_dump(microtime());
var_dump(microtime(true));