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

1度に1つのことを

今回のリーダブルコードの概念はやや抽象的。 要は一度に行うタスクは1つにする、というところがポイントになります。 そのための手法として下記のようなことを上げています。 コードが行っているタスクをすべて …

no image

画面テストのツールに関して

Unitテストに関してはxUnit一択だと思いますが、UI系のテストツールについて。 IDE(コードを書かずにすむマクロ系)に関して全てChromeで動くことを確認しています。 Contents1 ツ …

no image

テストのダミーデータ作成

データベースに大量のデータを作りたいときにいつもあああやhoge,aaaですとデータという感じがしないですし、抽出や集計ができません。 なるべく自然に近いデータが欲しいのですが、簡単に作れる方法があり …

no image

SQL基礎 複雑なSQLの組み方

SQLの本を見ますとかなり複雑なSQLが書かれていることが多いです。 これは頑張っても無理では・・・と思っていましたが、ポイントしては 原則として必ず図に書く まずは問題を細かく分割する 細部から切り …

no image

データ構造の基礎知識 後編 木構造

データベースの学習をしていたときの復習です。 データ構造の基礎知識 前編 メモリとポインタ、配列と連結リスト データ構造の基礎知識 中編 ハッシュ 今回はもう少し複雑な「木構造」について考えてみます。 …