sql >> Databasteknik >  >> RDS >> Mysql

Vad händer med Mysql float?

När du multiplicerar med 1 , resultatet konverteras till DOUBLE . Detta har mer precision, och som ett resultat kan du se felet i decimalapproximationen. Du kan se samma sak genom att tilldela en FLOAT kolumn till en DOUBLE kolumn.

CREATE TABLE `my_table` (
  `my_float_col` float,
  `my_double_col` double
);
INSERT INTO my_table (my_float_col) values (1.2355);
UPDATE my_table SET my_double_col = my_float_col;
SELECT my_float_col, my_double_col, my_float_col * 1 FROM my_table;
+--------------+--------------------+--------------------+
| my_float_col | my_double_col      | my_float_col * 1   |
+--------------+--------------------+--------------------+
|       1.2355 | 1.2354999780654907 | 1.2354999780654907 |
+--------------+--------------------+--------------------+

Jag är inte riktigt säker på varför det returnerar DOUBLE från multiplikationen, eftersom dokumentationen säger:

Men det är helt klart vad som händer.



  1. INSERT INTO med SubQuery MySQL

  2. Hur får man den numeriska delen från en sträng med T-SQL?

  3. Kontrollera om användarnamnet finns PDO

  4. Hur genererar man en UUIDv4 i MySQL?