sql >> Database teknologi >  >> RDS >> Mysql

Forskellen mellem flydende og decimal datatype

Dette er, hvad jeg fandt, da jeg var i tvivl.

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 præcis, hvad der skulle gøres i denne sag, den afkortede resten og mistede dermed 1/3-delen.

Så for summer er decimalen bedre, men for divisioner er flyderen bedre, op til et tidspunkt, selvfølgelig. Jeg mener, at bruge DECIMAL vil ikke give dig en "fejlbevis aritmetik" på nogen måde.

Håber dette hjælper.



  1. Sådan låser du en enkelt række

  2. MariaDB JSON_MERGE() Forklaret

  3. Aktivering af TLS i R12.1

  4. Oprettelse af delvist unikt indeks med sqlalchemy på Postgres