sql >> Database teknologi >  >> RDS >> Mysql

Hvorfor returnerer MySQL nogle flydere i videnskabelig notation, men ikke andre?

Der ser ud til at være en sekscifret grænse for, hvad der vises ud af CLI (og sandsynligvis andre steder). Det eksempel, du har, er 1.12305e-06, som er 0,00000112305, som vil blive vist som 0,00000 - selvom det tydeligvis ikke er nul.

Hvis du insisterer på at bruge floats eller doubler, bliver du nødt til at tvinge dem ud ved at bruge noget som round(columnName,5) for at tvinge visningen i en decimalværdi. Ellers kan du måske skifte til en decimnal datatype.

Fra http://dev.mysql.com/ doc/refman/5.0/da/floating-point-types.html

Fordi flydende kommaværdier er omtrentlige og ikke lagres som nøjagtige værdier, kan forsøg på at behandle dem som nøjagtige i sammenligninger føre til problemer. De er også underlagt platform- eller implementeringsafhængigheder. For mere information, se afsnit C.5.5.8, "Problemer med flydende point-værdier

Se også denne tråd på mysql-foraene om netop dette problem.



  1. Django:MySQL-syntaksfejl ved overførsel af parametre til rå SQL-forespørgsel

  2. io.vertx.mysqlclient.MySQLPool.query ().execute udføres aldrig rigtigt og returnerer intet

  3. ukendt database i jdbc

  4. MySql:er det muligt at 'SUMME HVIS' eller 'TÆLLE HVIS'?