1. ホーム
  2. mysql

[解決済み] floatとdecimalのデータ型の違い

2022-04-20 23:27:41

質問

MySQLでfloatとdecimalのデータ型を使用する場合、どのような違いがあるのでしょうか。

どのような場合にどちらを使うべきですか?

どのように解決するのですか?

これは というのが、この疑問を抱いた時に見つけたものです。

mysql> create table numbers (a decimal(10,2), b float);
mysql> insert into numbers values (100, 100);
mysql> select @a := (a/3), @b := (b/3), @a * 3, @b * 3 from numbers \G
*************************** 1. row ***************************
  @a := (a/3): 33.333333333
  @b := (b/3): 33.333333333333
@a + @a + @a: 99.999999999000000000000000000000
@b + @b + @b: 100

この場合、10進数はまさに想定されたとおりの働きをしました。 が切り捨てられ、1/3の部分が失われています。

つまり、合計では小数の方が良いが、割り算では浮動小数点数の方が良いということだ。 もちろん、ある点までは良いのですが。つまり、DECIMALを使ったからといって のような、失敗の許されない算数です。

お役に立てれば幸いです。