Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Unterschied zwischen Float- und Dezimaldatentyp

Dies habe ich gefunden, als ich diesen Zweifel hatte.

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

Die Dezimalzahl tat genau das, was sie in diesen Fällen tun sollte, sie schnitt den Rest ab und verlor somit den 1/3-Teil.

Für Summen ist also die Dezimalzahl besser, aber für Divisionen ist die Gleitkommazahl besser, natürlich bis zu einem gewissen Punkt. Ich meine, die Verwendung von DECIMAL gibt Ihnen in keiner Weise eine "fehlersichere Arithmetik".

Hoffe das hilft.