PHP をフロントエンド、MySQL をバックエンドとする小さな金融アプリケーションがあります。私には古くからの偏見があり、通貨の値をセント単位の整数として MySQL に保存しています。私の HTML フォームでは、「156.64」などのドル値を入力できます。PHP を使用してそれをセントに変換し、そのセントをデータベースに保存します。
フォームからドルの値を消去し、セントに変換する関数があります。先頭のテキストを削除し、末尾のテキストを削除し、100 を掛けて整数に変換します。その最後のステップは
$cents = (integer) ($dollars * 100);
これは、一貫して 15663 セントに変換される '156.64' のような非常に少数の値を除いて、ほとんどすべてに対して正常に機能します。なぜこれを行うのですか?
私がこれを行う場合:
$cents = (integer) ($dollars * 100 + 0.5);
その後、一貫して機能します。その丸め値を追加する必要があるのはなぜですか?
また、金額を浮動小数点値ではなく整数として保存することについての私の偏見は、もう必要ありませんか? 最新のフロート計算は、100% 正確な会計を維持するのに十分な、適切に丸められた正確な金額を生成しますか?