Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Różnica między typem danych zmiennoprzecinkowych i dziesiętnych

To to znalazłem, gdy miałem takie wątpliwości.

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

Cyfra dziesiętna zrobiła dokładnie to, co powinna zrobić w tych przypadkach, obcięła resztę, tracąc w ten sposób 1/3 części.

Tak więc dla sum ułamek dziesiętny jest lepszy, ale dla dzieleń liczba zmiennoprzecinkowa jest lepsza, oczywiście do pewnego momentu. Mam na myśli, że użycie DECIMAL w żaden sposób nie da ci "arytmetyki odpornej na błędy".

Mam nadzieję że to pomoże.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. JDBC a usługa sieciowa dla Androida

  2. JSON_VALID() – Testuj poprawność JSON w MySQL

  3. jQuery UI Sortable, a następnie zapisz kolejność w bazie danych

  4. jak uzyskać identyfikator ostatniego wstawienia po zapytaniu o wstawienie w aktywnym rekordzie codeigniter

  5. SQL:Jaka jest domyślna kolejność zapytań?