环境:
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 位的意思啊。
看看小面代码的结果吧。