sql >> Databáze >  >> RDS >> Mysql

Co se děje s plovákem Mysql?

Když vynásobíte 1 , výsledek se převádí na DOUBLE . To má větší přesnost a v důsledku toho můžete vidět chybu v desetinné aproximaci. Totéž můžete vidět přiřazením FLOAT sloupec na DOUBLE sloupec.

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

Opravdu si nejsem jistý, proč vrací DOUBLE z násobení, protože dokumentace říká:

Ale je jasné, co se děje.



  1. Ukládání dlouhých binárních (surová data) řetězců

  2. Jak nainstalovat SQLite na macOS

  3. Optimalizace dotazu MySQL pro celočíselné rozsahové vyhledávání

  4. Je lepší použít prázdnou hodnotu jako '' nebo jako NULL?