前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PHP的microtime()函数 & 浮点数显示精度

PHP的microtime()函数 & 浮点数显示精度

作者头像
vimsudoers
修改2020-02-11 11:20:06
1.3K0
修改2020-02-11 11:20:06
举报
文章被收录于专栏:PHP点滴PHP点滴

咳咳,我一直对这个函数的命名挺纠结的,明明返回的是秒,非要在名字带个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,就更好理解喽,就是带小数的秒喽。

让我们写段简单的代码看一下

代码语言:javascript
复制
<?
$mt=microtime();
$mt_f=microtime(true);
var_dump($mt);
var_dump($mt_f);
?>

输出如下:

可是为何浮点数形式表示的秒,小数点后边只有两位啊?这还怎么精确到微秒啦?其实这只是由于浮点数显示精度设定导致的,并不影响运算(比如求时间差值)精度。

如果想让其更高精度的显示,可以试试如下代码:

代码语言:javascript
复制
<?
echo ini_get("precision"), "\n";
ini_set("precision",16);
$mt=microtime();
$mt_f=microtime(true);

var_dump($mt);
var_dump($mt_f);
?>

输出如下:

可见之前默认的浮点数显示精度为12位,我们设置为16位后,就显示到小数点后6位啦。

好了,就啰嗦这些啦,其实我本来想多啰嗦一些的,可是浏览器崩溃了,这些都是我重新敲的,这心情啊,可酸爽了。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
作者已关闭评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档