Khi bạn nhân với 1
, kết quả đang được chuyển đổi thành DOUBLE
. Điều này có độ chính xác cao hơn, và kết quả là bạn có thể thấy lỗi trong xấp xỉ thập phân. Bạn có thể thấy điều tương tự bằng cách gán FLOAT
cột thành DOUBLE
cột.
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 |
+--------------+--------------------+--------------------+
Tôi thực sự không chắc tại sao nó trả về DOUBLE
từ phép nhân, vì tài liệu
nói:
Nhưng rõ ràng đó là những gì đang xảy ra.