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

Por que o MySQL está retornando alguns floats em notação científica, mas não outros?


Parece haver um limite de seis dígitos no que é mostrado na CLI (e provavelmente em outros lugares). O exemplo que você tem é 1,12305e-06, que é 0,00000112305, que seria mostrado como 0,00000 - embora claramente não seja zero.

Se você está insistindo em usar floats ou doubles, você terá que forçá-los usando algo como round(columnName,5) para forçar a exibição em um valor decimal. Caso contrário, talvez mude para um tipo de dados decimal.

De http://dev.mysql.com/ doc/refman/5.0/en/floating-point-types.html

Como os valores de ponto flutuante são aproximados e não armazenados como valores exatos, as tentativas de tratá-los como exatos em comparações podem levar a problemas. Eles também estão sujeitos a dependências de plataforma ou implementação. Para obter mais informações, consulte a Seção C.5.5.8, “Problemas com valores de ponto flutuante

Veja também este thread nos fóruns do mysql sobre esse problema exato.