ブックマーク / devblog.thebase.in (2)

  • 小数点の罠:メンバーシップポイント計算の裏側 - BASEプロダクトチームブログ

    はじめに この記事はBASEアドベントカレンダーの四日目の記事です。 こんにちは!私は@shiiyannnと申します。現在、メンバーシップ Appの開発に携わっています。メンバーシップ Appはショップオリジナルの「メンバーシップ」(会員制度)を作成することができる機能です。 2023年9月、メンバーシップ Appは大幅な機能アップデートを遂げました。今回のアップデートでは、ショップオーナーが商品購入時に独自のポイントを付与できるようになりました。付与されるポイントの量は、注文金額にショップオーナーが設定したポイント付与率を掛け合わせて計算されます。 この記事では、ポイント付与機能の開発中に直面した、浮動小数点計算の問題とその解決策についてお話しします。この問題を深掘りすることで、料率計算や金額処理に取り組む開発者の皆さんに有益な情報を提供できればと考えています。 リリース直前に発見した浮

    小数点の罠:メンバーシップポイント計算の裏側 - BASEプロダクトチームブログ
    nmcli
    nmcli 2023/12/04
    PHP は int か float 型しかなく固定小数点数を扱える型が無いため、原則整数で処理するようにしている。税や為替が絡むロジックの場合はなおさら。御社のプロダクトでもできれば float を使って欲しくない。
  • BASE で使っているPHPフレームワークにプルリクエストを送ったけど、先を越された話2 - BASEプロダクトチームブログ

    この記事はBASE Advent Calendar 2020の12日目の記事です。 devblog.thebase.in こんにちは!BASE株式会社 ServiceDevのShopグループ所属でエンジニアをしている炭田(@tanden)です。 「BASE」の裏側で動いているアプリケーションはCakePHP 2を使っています。そのCakePHP 2にプルリクエストを送ったけど先を越されてしまった話をします。 過去にも弊社の田中(@tenkoma)が同じような記事を書いていたので、そちらも合わせてご覧いただけると嬉しいです! devblog.thebase.in プルリクエストの内容 今回自分がプルリクエストを送ったのは、Validation::time()の不具合の修正です。Validation::time()は渡された文字列が妥当な時刻の形式になっているかどうかをチェックします。 渡され

    BASE で使っているPHPフレームワークにプルリクエストを送ったけど、先を越された話2 - BASEプロダクトチームブログ
    nmcli
    nmcli 2020/12/12
  • 1