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

Hvad sker der med Mysql float?

Når du ganger med 1 , resultatet bliver konverteret til DOUBLE . Dette har mere præcision, og som et resultat kan du se fejlen i decimaltilnærmelsen. Du kan se det samme ved at tildele en FLOAT kolonne til en DOUBLE kolonne.

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 |
+--------------+--------------------+--------------------+

Jeg er ikke helt sikker på, hvorfor den returnerer DOUBLE fra multiplikationen, fordi dokumentationen siger:

Men det er klart, hvad der sker.



  1. mysql ft_min_word_len ændring på ubuntu virker ikke

  2. Rails Resque-arbejdere fejler med PGError:Server lukkede forbindelsen uventet

  3. SQL-forespørgsel for at finde en tabels primære nøgle?

  4. Kan ikke ændre kolonne, der bruges i en fremmednøglebegrænsning