sql >> Databasteknik >  >> RDS >> Mysql

Skillnad mellan flytande och decimal datatyp

Detta är vad jag hittade när jag hade detta tvivel.

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

Decimalen gjorde precis vad som ska göras i dessa fall, den trunkerade resten och förlorade därmed 1/3-delen.

Så för summor är decimalen bättre, men för divisioner är flötet bättre, upp till någon punkt, förstås. Jag menar, att använda DECIMAL kommer inte att ge dig en "felbevis aritmetik" på något sätt.

Hoppas det här hjälper.



  1. Lägg till timmar till ett tidsvärde i PostgreSQL

  2. bädda in bild i html-e-post

  3. Om klustrade index i postgres

  4. Få ID för den infogade raden med C#