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

Когато добавя xx към mysql float колона, това е грешен резултат, грешка ли е?

Проблемът ви има нещо общо с това колко голяма е стойността ви с плаваща запетая, но не съм 100% сигурен защо. Тествах актуализиране на подобен ред с по-малки числа и работи добре. Трябва също така да се въздържате от използване на кавички, когато е възможно, тъй като това изисква допълнителна обработка. Вижте този SO въпрос:актуализиране на колона чрез изваждане на стойност

Ето моето лесно решение, точно както Тим Бигелайзен предложи:

CREATE TABLE `xxx` (
  `uid` int(11) NOT NULL,
  `money` decimal(10,2) NOT NULL DEFAULT '0.00' ,
  `real_money` float(10,2) NOT NULL ,
  `available_invoice` float(10,2) DEFAULT NULL,
  PRIMARY KEY (`uid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;

Вмъкване:

USE dbname;
insert into xxx Values(1234, 99959040.00, 0.00, 99999.00);

Актуализиране без низове:

update xxx set money = money - 20 where uid = 1234;

Има някои странни неща при изчисляване с големи стойности с плаваща запетая. Някои от тези проблеми зависят от машината и са свързани с това какъв тип процесор имате. Прочетете повече тук:http://dev.mysql .com/doc/refman/5.7/en/problems-with-float.html

Също така, според друг SO въпрос, стойностите с плаваща запетая НЕ са добър начин за съхраняване на парични стойности. Разлика между плаващ и десетичен тип данни (вижте втория отговор).

Изглежда, че използвайки decimal и numeric типовете данни са най-добри за колони за пари в mysql.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Таблицата не съществува след CREATE TABLE

  2. Как да търся от полето за сериализиране в базата данни на mysql?

  3. MySQL :Когато името на параметъра на съхранената процедура е същото като името на колоната на таблицата

  4. Превключване на PostgreSQL база данни или схема в DataGrip JetBrains

  5. Извличане на данни към шаблона от външна база данни с django