sql >> Database >  >> RDS >> Mysql

Wat is er aan de hand met Mysql float?

Wanneer je vermenigvuldigt met 1 , het resultaat wordt geconverteerd naar DOUBLE . Dit heeft meer precisie en als resultaat kun je de fout in de decimale benadering zien. U kunt hetzelfde zien door een FLOAT . toe te wijzen kolom naar een DOUBLE kolom.

CREATE TABLE `my_table` (
  `my_float_col` float,
  `my_double_col` double
);
INSERT INTO my_table (my_float_col) values (1.2355);
UPDATE my_table SET my_double_col = my_float_col;
SELECT my_float_col, my_double_col, my_float_col * 1 FROM my_table;
+--------------+--------------------+--------------------+
| my_float_col | my_double_col      | my_float_col * 1   |
+--------------+--------------------+--------------------+
|       1.2355 | 1.2354999780654907 | 1.2354999780654907 |
+--------------+--------------------+--------------------+

Ik weet niet precies waarom het DOUBLE teruggeeft van de vermenigvuldiging, omdat de documentatie zegt:

Maar het is duidelijk wat er gebeurt.



  1. Hoofdlettergevoelig waar-instructie in laravel

  2. Hoe django-modellen met externe sleutels in verschillende DB's te gebruiken?

  3. Ontvang berichten uit alle categorieën behalve één categorie

  4. mySql:haalt de rijen op waar het aantal woorden in de cel (gescheiden door komma's) dezelfde waarde heeft als een overeenkomende cel