skillup

技術ブログ

Database プログラミング全般

浮動小数点に関して

投稿日:2021年11月27日 更新日:

金額計算なんかでfloatを使うと誤差が出るっていうのは基礎的な話ではありますが、背景知識を含めて理解しておこうと思ったのでメモります。

float,doubleでの誤差

浮動小数点とは目に見える小数点ではなく、計算で誤差が発生することを前提とした数値データになります。

理由としてはコンピューターは内部では当たり前ですが、2のn乗のような形でデータを格納しているため、実際には近似値の計算になってしまいます。

こういったデメリットはありますが非常に広い範囲の数を扱うことができ、数百桁レベルの数を扱うことができます。

ちなみに浮動小数点の逆が固定小数点であり、誤差が出ない代わりに桁数が制限されます。

金額の計算はdecimal型で

金額計算などをする場合、当然誤差は許されないので、その場合にはdecimal型を使うのが誤差が出ず問題がないようです。

ただ言語の方でdecimalに対応するライブラリがない、メモリを圧迫する、パフォーマンスを優先させたいなどの場合はfloat/doubleが選択肢としてあげられるようです。

参考リンク

10 進固定小数点数

なぜBigDecimalを使わなければならないのか

金額計算(会計処理など)は Decimal 型で、科学計算には Double 型 を使用する

MySQLのFLOAT型を使う理由が見つからない件

浮動小数点って何?

double, floatとdecimalの違い

-Database, プログラミング全般

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

no image

SQL基礎 case&groupbyの活用について

主に集計タイプの計算で大活躍するgroupbyについて。 主な用途は集計とカット。特にcase式と連動した集計はかなり使える 例 nameとageで構成されたテーブルがあるとして、年代ごとの人数を出し …

no image

トークン認証に関して

Contents1 トークンでの認証2 Laravelでのtoken トークンでの認証 APIアプリケーションを作る場合、認証方式としてはクッキーとセッションを利用したものよりもトークンを使った認証方 …

no image

制御フローについて

リーダブルコード 7章。制御フロー(if文などの条件分岐)について ここらへんは個人個人癖がついているとおもいますが、確かに読みやすい、読みにくいというのはあるのでなるべく汎用性のある規則を身につけた …

no image

ダミーデータの作り方 まとめ

現在作っているアプリを顧客先で見せる機会があり、そのためダミーデータを入れる、という仕事がありました。 といっても画面からポチポチやったんでは時間もかかりますし、何より精神的にやられてしまいます。(汗 …

no image

ER図作成ツールについて(Mac版)

ER図作成ツールについてMacで色々と調べましたので、メモを。 フリー限定で。 ちなみにwindowsを使っていればA5:SQLが一番使えるかと思います。 以前も下記リンクで説明させていただきました。 …

アーカイブ