ホームページ >バックエンド開発 >PHPチュートリアル >phpの計算結果が0なのですが、なぜ3.5527136788005E-15と表示されるのでしょうか?
$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 ではない理由については、コンピューターの基礎知識で数の表現を復習してください
また、同時に有効数の知識も復習してください
3.5527136788005E-15 は非常に小さい数 (科学表記法さえ知りませんよね) なので、0 であると考えることができます
なぜ実数の 0 ではないのかについては、コンピューターの基本的な知識を復習してください。
さらに、有効な数値の知識も同時に復習してください
toFixed 方法返回一个字符串,代表一个以定点表示法表示的数字。numObj.toFixed([fractionDigits])参数numObj必选项。一个 Number 对象。fractionDigits可选项。小数点后的数字位数。其值必须在 0 ? 20 之间,包括 0 和 20。说明toFixed 方法返回一个以定点表示法表示的数字的字符串形式。该字符串中小数点之前有一位有效数字,而且其后必须包含 fractionDigits 数字。如果没有 fractionDigits 参数,或者该参数为 undefined,toFixed 方法假定该值为 0。
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になります