Mysql
 sql >> Base de données >  >> RDS >> Mysql

Que se passe-t-il avec Mysql float ?

Lorsque vous multipliez par 1 , le résultat est converti en DOUBLE . Cela a plus de précision et, par conséquent, vous pouvez voir l'erreur dans l'approximation décimale. Vous pouvez voir la même chose en attribuant un FLOAT colonne à un DOUBLE colonne.

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 |
+--------------+--------------------+--------------------+

Je ne sais pas vraiment pourquoi il renvoie DOUBLE de la multiplication, car la documentation dit :

Mais c'est clairement ce qui se passe.