Mysql
 sql >> база данни >  >> RDS >> Mysql

Защо MySQL round плава много повече от очакваното?

Когато стартирате заявката:

SELECT * FROM some_table WHERE id = 123

Разчитате на потребителския интерфейс за форматиране на числата с плаваща запетая. Интерфейсът, който използвате, използва два знака, а не повече. В крайна сметка няма информация за „правилния“ номер, която да се покаже.

Можете да убедите интерфейса да покаже правилното число, като форматирате числото като низ или като десетичен знак. Например:

select format(some_float_field, 3)

ще преобразува това в низ с три знака след десетичната запетая. Едно предупреждение:той също така ще добави запетаи, които може да не искате. Това също трябва да работи:

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

Имайте предвид, че можете лесно да потвърдите, че данните са правилни, като направите нещо като:

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

Имайте предвид, че не искате да използвате = върху стойностите с плаваща запетая, но вече разбирате това.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. pip инсталирайте mysqlclient на amazon linux

  2. PyMySQL връща стари/моментни стойности/не изпълнява повторно заявка?

  3. Какъв формат е това?

  4. Определяне дали MySQL таблицата индекс съществува преди създаването

  5. Номерирането на редовете на mysql нулира всеки различен запис