sql >> データベース >  >> RDS >> 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
    

    小数は、この場合に想定されていることを正確に実行し、残りを切り捨てて、1/3の部分を失いました。

    したがって、合計の場合は小数の方が優れていますが、除算の場合はもちろん、ある時点まではフロートの方が優れています。つまり、DECIMALを使用しても、「フェイルプルーフ演算」は決して得られません。

    お役に立てれば。



    1. SQLServerをOracleに接続する

    2. MySQLのすべての関数を一覧表示する2つの方法

    3. Springのストアドプロシージャ-プロシージャから返される結果は常に空です

    4. SQLServerでのグループ化された連結