ホームページ  >  記事  >  バックエンド開発  >  FLOATについて質問する

FLOATについて質問する

WBOY
WBOYオリジナル
2016-06-13 13:44:03842ブラウズ

FLOAT
について質問する//$usec: 現在のマイクロ秒, $sec: 現在の秒
list ( $usec, $sec ) =explose ( ' ', microtime () );
$ time1 = ( float ) $usec + ( float ) $sec;

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

echo $time2 - $time1;

結果出力は次のような数値です: 3.40938568115E-5

質問:
単独 Print $ usec と $sec を入力し、次のような数値を出力します: 0.95312700 1326693637
$time は次のような数値を出力します: 1326693637.95
では、なぜ $time1-$time2 の出力は "3.40938568115E-5" になるのでしょうか? ? ?

ありがとうございます


-----解決策---------

ディスカッション

引用:

形式は自分で定義できます
PHP コード

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

現時点で理解できないのは、なぜこれがデフォルトで発生するのかということです。 。 。

------解決策---------
値が小さすぎて表現できないため小数であるため、科学的表記法でのみ表現できます
------解決策---------
$time2 - $time1 の値は小さすぎます。0.0000340938568115 にほぼ等しい
最初の数個の 0 は精度表示に影響するため、科学表記法に自動的に変更されます
3.40938568115E-5 (3.40938568115 * 10 ^ -5 に相当)
------解決策---------
話し合う

実際に私が言いたいのは、
$time1 と $time2 は両方とも次のような数値です: 1326693637.95
その減算も小数点以下 2 桁である必要があります。なぜ小数点以下がこれほど多いのでしょうか。多くの? ?
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。