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

Perché MySQL round fluttua molto più del previsto?

Quando esegui la query:

SELECT * FROM some_table WHERE id = 123

Stai facendo affidamento sull'interfaccia utente per formattare i numeri in virgola mobile. L'interfaccia che stai utilizzando utilizza due caratteri anziché più. Dopotutto, non ci sono informazioni sul numero "giusto" da mostrare.

Puoi convincere l'interfaccia a mostrare il numero giusto formattando il numero come stringa o come decimale. Ad esempio:

select format(some_float_field, 3)

lo convertirà in una stringa con tre cifre decimali. Un avvertimento:aggiungerà anche virgole che potresti non volere. Dovrebbe funzionare anche questo:

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

Nota che puoi facilmente verificare che i dati siano corretti eseguendo qualcosa come:

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

Nota che non vuoi usare = su valori in virgola mobile, ma lo capisci già.