php を学ぶ初心者向けの質問 (週末投稿)
echo (int) ( (0.1 0.7) * 10 ); // Display 7
echo (int) ( (0.2 0.7) * 10 ); // Display 9
?>
最初の項目の実行結果が 8
でないのはなぜですか-----解決策のアイデア---------- - -----------
浮動小数点数の精度問題
printf('%0.16f', (0.1+0.7) * 10 ); // 7.9999999999999991<br /><br />
ログイン後にコピー
-----解決案---------- -- -----------
この投稿は xuzuning によって最終編集されました: 2015-04-13 11:10:30 それはあなたが間違っていたからです
( int) は強制的に整数に変換されます。このとき、小数部分のみが切り捨てられ、他の処理は行われません。
echo (int)2.2; //2
echo (int)2.9 ; //2
同様に
echo (int)7.9999999999999991; //7
echo (0.1 0.7) * 10;有効数
--- ---解決策のアイデア----------------------
浮動小数点数の精度の問題。
http://segmentfault.com/q/1010000002123613
-----ソリューションのアイデア----------------------
エラー ログを開きます。
------ソリューションのアイデア----------------------
デバッグには xdebug をインストールすることをお勧めします
http://www.cnblogs.com/qiantuwuliang/archive/2011/01/23/1942382.html
-----ソリューションのアイデア-------- -- -----------
$this はインスタンス化されたオブジェクトです
A::foo() は静的方法でクラスを呼び出すメソッドです
php 将来的には、5.3 で厳密標準レベルのエラー警告が表示される予定です:
非静的メソッド A::foo() は静的に呼び出すべきではありません
非静的メソッドを静的に呼び出すことはできません
初心者の場合、推奨される PHP バージョンは 5.4 以上で、エラー チェック レベルは All です
これにより、良い習慣が身に付きやすくなります