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

Изваждането на две равни стойности не е нула в mysql

Това е известно като приблизителна прецизност . Това не е грешка, с плаваща запетая типовете данни са предназначени да работят по този начин. Те не могат да съхраняват данни точно. Така че, ако това има значение, трябва да използвате типове данни с фиксирана точка, като DECIMAL в MySQL.

От друга страна, винаги можете да използвате прецизна делта за сравнения за плаваща запетая, като:

SELECT 
  `foo`,
  `bar`,
  IF(ABS(`foo`-`bar`)<1E-13, 0, `foo`-`bar`) AS zero_compared
FROM
 t

както можете да видите, тук делтата е 1E-13 (обикновено това ще бъде достатъчно)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Има ли някаква основателна причина за използване на Unix сокети през TCP/IP с mysql?

  2. Използвайте wp_query след промяна на базата данни чрез нов wpdb

  3. PHP Изчислете броя на низходящата линия в двоичното дърво

  4. Как да изтрия няколко реда от mysql база данни с квадратче за отметка с помощта на PHP?

  5. Актуализирайте стойност на колона до COUNT редове за конкретни стойности в същата таблица