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

Jak MySQL wykonuje obliczenia matematyczne dodawania liczb zmiennoprzecinkowych?

Wiem, że SQL 92 jest starym standardem, ale jestem prawie pewien, że nie uległo to zmianie w nowszych wersjach standardu SQL.

SQL 92 definiuje

Pytanie brzmi:0.1 i 0.2 w zapytaniu SELECT 0.1 + 0.2 przybliżony czy dokładny?
Odpowiedź brzmi:nie wiesz również baza danych nie może wiedzieć.
Więc baza danych uruchomi implementację zdefiniowaną dla silników MySQL i MariaDB, co wydaje się być obsługiwane jako DECIMAL(1,1) typy danych

Dlaczego odpowiedź Nicka zwraca prawidłowe lub oczekiwane wartości z definicją tabeli

SQL 92 definiuje również

Co Nick zrobił, definiując typ danych w tabeli.

Zmieniłem tę odpowiedź, ponieważ znalazłem dzisiaj coś w podręczniku MySQL.

Zapytanie

SELECT (0.1 + 0.2) = 0.3

Wyniki w 1 w MySQL, co oznacza, że ​​MySQL używa dokładnych obliczeń numerycznych i używa Matematyka precyzyjna gdzie to możliwe. Tak więc MySQL wie, że 0.1 , 0.2 i 0.3 są tutaj dokładne typy danych i trzeba je dokładnie obliczyć, tak jak się spodziewałem przed tą edycją.

Znaczenie zapytania

SELECT (0.1 + 0.2) = 0.3 

będzie biegać pod maską mniej więcej jak

SELECT CAST((0.1 + 0.2) AS DECIMAL(1, 1)) = CAST((0.3) AS DECIMAL(1, 1));


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zaktualizować wartości z tabeli MYSQL bez przeładowywania strony?

  2. Jak mogę przechowywać symbol '€' w MySQL używając PHP?

  3. Słabe gdzie ma wydajność w Laravel

  4. przechowywanie obrazu do byte[] w Mysql za pomocą asp.net i c#

  5. Jak wykonać kopię zapasową bazy danych Moodle MySQL