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

NOT EXISTSの利用2

今回もNOT EXISTSの利用です。 前回の問題にプラスアルファし、列が一緒でないと連続でも意味ない仕様にします。 例えば下記のようなテーブルがあるとします。 seat | row_id | sta …

no image

GlassFishでDB接続

JavaEEではアプリケーションサーバーとしてGlassFishを使いますが、先日、GlassFishを通さないとJavaEEでDBが動かせないということを知りました。そのためJavaEEではデータベ …

no image

webの仕組み その2 リクエストとレスポンス

クライアント(ブラウザ)はサーバーとの接続を確立した後、各種リクエストを送信します。サーバーはそれにこたえテキストや画像などのリソースをクライアントに転送します(これがレスポンスです。) Firefo …

no image

jQuery modalダイアログについて&重複時間処理

Contents1 jqueryモーダルダイアログ1.1 あらかじめ読み込むライブラリ1.2 ソース本体1.2.1 Html側1.2.2 Javascript側1.2.3 参考リンク2 重複時間につい …

no image

SQLインジェクション

セキュリティ関係の知識がぬるいのでちょっとお勉強。 知っていることもあるが復習もかねて勉強を。 Contents1 SQLインジェクションとは?2 被害3 対策4 参考サイト・書籍5 ソース SQLイ …

アーカイブ