Heim  >  Artikel  >  Backend-Entwicklung  >  问一个FLOAT的有关问题

问一个FLOAT的有关问题

WBOY
WBOYOriginal
2016-06-13 13:44:03842Durchsuche

问一个FLOAT的问题
//$usec:当前微秒数,$sec:当前秒数
list ( $usec, $sec ) = explode ( ' ', microtime () );
$time1 = ( float ) $usec + ( float ) $sec;

list ( $usec, $sec ) = explode ( ' ', microtime () );
$time2 = ( float ) $usec + ( float ) $sec;

echo $time2 - $time1;

结果输出一个类似这样的数:3.40938568115E-5 

问题:
单独打印$usec和$sec,输出这样的数:0.95312700 1326693637
$time输出类似这样的数:1326693637.95
那为什么用$time1-$time2输出成了“3.40938568115E-5 ”???

谢谢
 

------解决方案--------------------

探讨

引用:

可以自己定义格式
PHP code

echo sprintf('%.16F', $time2 - $time1);

我现在不解的是为什么默认会出来这种情况。。。

------解决方案--------------------
因为数值太小了,无法用小数表示,所以只能有科学计数法表示
------解决方案--------------------
因为你的 $time2 - $time1 数值太小,大概等于 0.0000340938568115
这样前面的几个0影响精度显示,所以自动改为科学计数法
3.40938568115E-5 相当于 3.40938568115 * 10 ^ -5
------解决方案--------------------
探讨

其实我的意思是:
$time1和$time2都是类似于这样的数:1326693637.95
那他们相减也应该是两位的小数啊,为什么小数点后面出来那么多??
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn