在昨天帖子《PHP 问号表达式效率问题》中,我使用microtime(true)
来获得程序执行的起始点和终止点。
(图源 :pixabay)
咳咳,我一直对这个函数的命名挺纠结的,明明返回的是秒,非要在名字带个micro,总让我以为返沪的是微秒(microseconds)。
其实这个函数的功能是返回带微秒的时间,PHP中声明如下:
mixed microtime ([ bool $get_as_float = FALSE ] )
关于返回值,文档中是这样描述的
By default, microtime() returns a string in the form “msec sec”, where sec is the number of seconds since the Unix epoch (0:00:00 January 1,1970 GMT), and msec measures microseconds that have elapsed since sec and is also expressed in seconds.
If get_as_float is set to TRUE, then microtime() returns a float, which represents the current time in seconds since the Unix epoch accurate to the nearest microsecond.
也就是说,如果不加参数TRUE,那么返回的是”msec sec”这样的形式,其中msec也就是用秒表示,也就是说是小数形式的秒。
如果加上参数TRUE,就更好理解喽,就是带小数的秒喽。
让我们写段简单的代码看一下
输出如下:
可是为何浮点数形式表示的秒,小数点后边只有两位啊?这还怎么精确到微秒啦?其实这只是由于浮点数显示精度设定导致的,并不影响运算(比如求时间差值)精度。
如果想让其更高精度的显示,可以试试如下代码:
输出如下:
可见之前默认的浮点数显示精度为12位,我们设置为16位后,就显示到小数点后6位啦。
好了,就啰嗦这些啦,其实我本来想多啰嗦一些的,可是浏览器崩溃了,这些都是我重新敲的,这心情啊,可酸爽了。
https://steemit.com/~witnesses type in
oflyhigh
and click VOTE
Vote @oflyhigh via Steemconnect
Thank you!
This page is synchronized from the post: 每天进步一点点:PHP的microtime()函数 & 浮点数显示精度