Ini itulah yang saya temukan ketika saya memiliki keraguan ini.
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
Desimal melakukan persis apa yang seharusnya dilakukan pada kasus ini, memotong sisanya, sehingga kehilangan 1/3 bagian.
Jadi untuk penjumlahan desimal lebih baik, tetapi untuk pembagian float lebih baik, sampai titik tertentu, tentu saja. Maksud saya, menggunakan DECIMAL tidak akan memberi Anda "aritmatika bukti gagal" dengan cara apa pun.
Semoga ini membantu.