広告スペース(バナー)
🐘PHP レッスン
基本文法の基礎8▾
データ構造とオブジェクト指向7▾
構文の基本を深める9▾
関数とデータ構造の応用9▾
アルゴリズムとテストの基礎8▾
文字列・数値操作の応用8▾
実務で役立つ機能8▾
レッスン 57 / 68
浮動小数点の誤差に気をつけよう
このレッスンでは、コンピュータが小数を扱う際に生じる誤差について学び、金額計算などで注意すべきポイントを理解することを目標にします。「PHP 浮動小数点 誤差」で検索している方向けです。
コンピュータは小数を2進数で扱うため、0.1 + 0.2のような単純な計算でも、ぴったり0.3にならないことがあります。PHPは表示上は0.3と丸めて見せますが、内部的な比較では誤差の影響でfalseになります。
サンプルコードでは、0.1 + 0.2を表示すると一見0.3に見えるものの、var_dump(0.1 + 0.2 == 0.3)を実行するとbool(false)という結果になる様子を確認しています。表示上の丸めと、内部的な厳密な値の違いに注目してみましょう。
初心者がよくつまずくのが、この誤差の存在に気づかず、小数の等価比較をそのまま行ってしまうことです。金額計算などで小数の誤差が問題になる場合は、整数(銭単位など)で計算するなど、誤差が出ない工夫が必要です。
これはPHPだけでなく、多くのプログラミング言語に共通するコンピュータの仕組みに起因するものです。会計システムなど精度が求められる場面では、この特性を踏まえた対策が欠かせません。
📖 お手本コード
✍️ あなたのコード
コードを書いたら「実行する」を押してください
🧪 このサイトではPHPを直接コンパイル・実行できないため、お手本コードと同じ内容を入力できたかをその場で判定します(採点はブラウザ内だけで行われ、どこにも送信されません)。
🎯
ここまでできればゴール達成!
金額計算で誤差が出ないよう工夫された、正確な電卓が作れるようになります。
金額計算で誤差が出ないよう工夫された、正確な電卓が作れるようになります。
広告スペース(バナー)
広告スペース(記事内)