Quando você multiplica por
1
, o resultado está sendo convertido para DOUBLE
. Isso tem mais precisão e, como resultado, você pode ver o erro na aproximação decimal. Você pode ver a mesma coisa atribuindo um FLOAT
coluna para um DOUBLE
coluna. 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 |
+--------------+--------------------+--------------------+
Não sei ao certo por que está retornando
DOUBLE
da multiplicação, porque a documentação
diz:Mas é claramente o que está acontecendo.