ホームページ > バックエンド開発 > PHPチュートリアル > phpの計算結果が0なのですが、なぜ3.5527136788005E-15と表示されるのでしょうか?

phpの計算結果が0なのですが、なぜ3.5527136788005E-15と表示されるのでしょうか?

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
リリース: 2016-06-23 13:53:30
オリジナル
1342 人が閲覧しました

$yuejie = 0;
$yuejie += $v['yuejie'];
$v['yuejie'] データは下の図にあります


累積結果は下の図にあります



3行目のデータは0であるはずですが、3.5527136788005E-15と表示されるのはなぜでしょうか。


ディスカッションへの返信(解決策)

皆さん寝ていますか?

データ コードはありません、推測します...
echo PHP_INT_MAX の出力を見てください。

3.5527136788005E-15 は非常に小さい数値です (科学表記法さえ知りません)。
なぜ本物の 0 ではないのかについては、コンピュータの基本的な知識で数値の表現を復習してください
また、有効な数値の知識を復習してください

3.5527136788005E-15 は非常に小さな数です (わかりません。科学的記法も知らない)、それは 0 であると考えることができます
実数の 0 ではない理由については、コンピューターの基礎知識で数の表現を復習してください
また、同時に有効数の知識も復習してください


ただ、累積結果が0になるはずなのですが、なぜこうなってしまうのでしょうか?私のデータはすべて小数点以下 2 桁ですが、どうしてこのようになるのでしょうか?

3.5527136788005E-15 は非常に小さい数 (科学表記法さえ知りませんよね) なので、0 であると考えることができます
なぜ実数の 0 ではないのかについては、コンピューターの基本的な知識を復習してください。
さらに、有効な数値の知識も同時に復習してください


プロジェクトに取り組んでいるときに、この問題に遭遇することがあります。学んでからでは手遅れになります。

toFixed 方法返回一个字符串,代表一个以定点表示法表示的数字。numObj.toFixed([fractionDigits])参数numObj必选项。一个 Number 对象。fractionDigits可选项。小数点后的数字位数。其值必须在 0 ? 20 之间,包括 0 和 20。说明toFixed 方法返回一个以定点表示法表示的数字的字符串形式。该字符串中小数点之前有一位有效数字,而且其后必须包含 fractionDigits 数字。如果没有 fractionDigits 参数,或者该参数为 undefined,toFixed 方法假定该值为 0。
ログイン後にコピー

表示するデータを小数点第 2 位までに抑えると、
a = -80.27;b = 53.51;c = 26.76;document.write((a+b+c).toFixed(2));
ログイン後にコピー
0.00 になります

やあ、間違えました! jsの問題かと思いました
計算精度については、計算するときにあまり考えなくても、誤差がどんどん溜まっていきます
表示するときに適切な精度に対処するだけです

$yuejie = 0;$a = array(  array('yuejie' => -80.27),  array('yuejie' => 53.51),  array('yuejie' => 26.76),  array('yuejie' => -38.29),  array('yuejie' => 38.29),);foreach($a as $v) {  $yuejie += $v['yuejie'];  printf("%8.2f %8.2f\n", $v['yuejie'], $yuejie);}
ログイン後にコピー

問題は解決しました、毎time 累計結果を四捨五入して小数点以下は0になります

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート