Mysql
 sql >> Base de données >  >> RDS >> Mysql

Pourquoi MySQL renvoie-t-il certains flottants en notation scientifique, mais pas d'autres ?

Il semble y avoir une limite à six chiffres sur ce qui est affiché hors de la CLI (et probablement ailleurs). L'exemple que vous avez est 1.12305e-06 qui est 0.00000112305 qui serait affiché comme 0.00000 - bien que ce ne soit clairement pas zéro.

Si vous insistez pour utiliser des flottants ou des doubles, vous devrez les forcer à utiliser quelque chose comme round(columnName,5) pour forcer l'affichage en valeur décimale. Sinon, passez peut-être à un type de données décimnal.

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

Étant donné que les valeurs à virgule flottante sont approximatives et ne sont pas stockées comme des valeurs exactes, les tentatives de les traiter comme exactes dans les comparaisons peuvent entraîner des problèmes. Ils sont également soumis à des dépendances de plate-forme ou d'implémentation. Pour plus d'informations, voir Section C.5.5.8, « Problèmes avec les valeurs à virgule flottante

Voir aussi ce thread sur les forums mysql à propos de ce problème précis.