Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Was ist mit MySQL Float los?

Wenn Sie mit 1 multiplizieren , wird das Ergebnis in DOUBLE umgewandelt . Dies hat mehr Genauigkeit, und als Ergebnis können Sie den Fehler in der dezimalen Annäherung sehen. Sie können dasselbe sehen, indem Sie einen FLOAT zuweisen Spalte zu einem DOUBLE Spalte.

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

Ich bin mir nicht sicher, warum es DOUBLE zurückgibt aus der Multiplikation, weil die Dokumentation sagt:

Aber es ist eindeutig, was passiert.