sql >> Databasteknik >  >> RDS >> Mysql

Varför flyter MySQL round mycket mer än förväntat?

När du kör frågan:

SELECT * FROM some_table WHERE id = 123

Du litar på att användargränssnittet formaterar flyttalstalen. Gränssnittet du använder använder två tecken snarare än fler. Det finns trots allt ingen information om "rätt" nummer att visa.

Du kan övertyga gränssnittet att visa rätt nummer genom att formatera talet som en sträng eller som en decimal. Till exempel:

select format(some_float_field, 3)

kommer att konvertera detta till en sträng med tre decimaler. En varning:det kommer också att lägga till kommatecken som du kanske inte vill ha. Detta bör också fungera:

select cast(some_float_field as decimal(8, 3))

Observera att du enkelt kan verifiera att uppgifterna är korrekta genom att göra något som:

select *
from some_table
where some_float_field between 1919.987 - 0.0001 and 1919.987 + 0.0001;

Observera att du inte vill använda = på flyttalsvärden, men det förstår du redan.



  1. Dålig där har prestanda i Laravel

  2. Hur gör jag en sammansatt nyckel med SQL Server Management Studio?

  3. Ställ in MySQL databas tidszon till GMT

  4. Hur kör jag en mysql-fråga i wordpress?