Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Por que a rodada do MySQL flutua muito mais do que o esperado?


Ao executar a consulta:
SELECT * FROM some_table WHERE id = 123

Você está contando com a interface do usuário para formatar os números de ponto flutuante. A interface que você está usando está usando dois caracteres em vez de mais. Afinal, não há informações sobre o número "certo" a ser exibido.

Você pode convencer a interface a mostrar o número correto formatando o número como uma string ou decimal. Por exemplo:
select format(some_float_field, 3)

irá converter isso em uma string com três casas decimais. Um cuidado:ele também adicionará vírgulas que você pode não querer. Isso também deve funcionar:
select cast(some_float_field as decimal(8, 3))

Observe que você pode validar prontamente se os dados estão corretos fazendo algo como:
select *
from some_table
where some_float_field between 1919.987 - 0.0001 and 1919.987 + 0.0001;

Observe que você não deseja usar = em valores de ponto flutuante, mas você já entende isso.