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.