PHPerKaigi 2023 • Day 1での登壇資料です。 https://phperkaigi.jp/2023/ https://fortee.jp/phperkaigi-2023/proposal/3630baf7-f540-4dba-b10a-89cdbddf62da
![PHPで任意精度演算を行って「正しい」金額計算をする方法 / Perform arbitrary precision arithmetic in PHP to achieve "accurate" monetary calculations](https://cdn-ak-scissors.b.st-hatena.com/image/square/32643fd36d5ec028502af3e3437c235fb8f31a37/height=288;version=1;width=512/https%3A%2F%2Ffiles.speakerdeck.com%2Fpresentations%2F6af2bf5f5ab449af81fa47462ea69320%2Fslide_0.jpg%3F24991430)
今更感の強い話題かもしれませんが、PHPで小数点計算を実行する際は、本当に正しい数値になっているのか気をつけましょうという話です。 <?php $records = array( [ "date" => "2021/01/01", "amount" => 13.05 ], [ "date" => "2021/01/02", "amount" => 17.05 ], [ "date" => "2021/01/03", "amount" => 14.3 ], ); $totalAmount = 0; foreach ($records as $record) { $totalAmount += $record['amount']; } echo(number_format($totalAmount, 15)); // 結果:44.400000000006
7月22日に開催された第70回PHP勉強会で発表してきました。以下が発表資料です。 浮動小数点数周りのトピックを3点紹介する内容でしたが、思ったより反応が良かったように思います。 ただ、面白おかしく話そうとして、聞いている方々に無駄に恐怖を与えてしまったかもしれません。冷静に読み返していただければ、怖いように見える内容もレアケースの話題が多いことがわかるかと思います。 また、PDOの挙動については誤解を与えてしまったかと思いますので、プレゼン資料の25ページ目を大幅に差し替えてアップロードしました。 この点についてもう少し説明します。PDOでプリペアードクエリを利用する際、プレースホルダに値を埋め込むのにPDOStatement::bindValueメソッドを利用することができます。この際、bindValueメソッドの第3引数で利用でPDO::PARAM_INT定数を指定しても、第2引数の
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く