2016-05-07 5 views
1

PHPでは、マイクロタイム(真)を使用している場合、ほとんどの場合、10進数の右側に6桁の数字が入ります。PHPのマイクロタイムに欠けている数字

<?php 
//version 5.5.31 

$time = microtime(); 
$timeTrue = microtime(true); 

var_dump($time, $timeTrue); 

// string(21) "0.64728900 1462577720" 
// float(1462577720.6473) 
?> 

はなぜフロートは、最初の4桁の数字を示していますか?時には3桁しか得られないこともあります。 float(1462577720.647289)を返さないようにしてください。ほとんどの場合6桁、時には5桁です

答えて

2

小数点以下の桁では、精度が混乱するようです。

倍精度浮動小数点は、通常、最大14〜16桁の精度を持ち、例題14を示します。すべての桁数がカウントされます。小数点は別の変数(浮動小数点定義レベル)で処理されます。

非常に大きな数字にも同じ原則が適用され、14〜15桁の長さでも精度が失われます。

+1

php.iniの '精度'ランタイムを 'ini_set( 'precision'、16);で変更することができます; – Federkun

+0

合意。 ini_set( "precision"、16)を使用すると、より多くの数字が得られます。私はPHPがなぜデフォルトの精度よりも低い関数を返すのか分からない。私は、この場合、関数が、マイクロ秒の100万分の1秒の間に必要な桁数を内部的に返すと考えています。 – matt

+0

「デフォルトの精度」の代わりに「必要な精度」が必要です – matt

関連する問題