sql >> Databasteknik >  >> RDS >> Mysql

Varför returnerar MySQL vissa flytningar i vetenskaplig notation, men inte andra?

Det verkar finnas en sexsiffrig gräns för vad som visas i CLI (och förmodligen någon annanstans). Exemplet du har är 1.12305e-06 som är 0.00000112305 som skulle visas som 0.00000 – även om det uppenbarligen inte är noll.

Om du insisterar på att använda flöten eller dubblar, måste du tvinga ut dem med något som round(columnName,5) för att tvinga visningen i ett decimalvärde. Annars kanske du byter till en decimnal datatyp.

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

Eftersom flyttalsvärden är ungefärliga och inte lagras som exakta värden, kan försök att behandla dem som exakta i jämförelser leda till problem. De är också föremål för plattforms- eller implementeringsberoende. För mer information, se avsnitt C.5.5.8, "Problem med flytande poäng

Se även denna tråd på mysql-forumen om just detta problem.



  1. Infoga i en tabell som har ett streck i namnet

  2. mysql_query till PDO och förberedda uttalanden

  3. Reguljära uttryck hitta och ersätt i Postgres

  4. Senast körda frågor för en specifik databas