Разница между float (2,2) и float () в MySQL - PullRequest
39 голосов
/ 02 ноября 2011

Я создал таблицу в MySQL со столбцом типа float (2,2) и вставил в нее значение 10, но обнаружил, что сохраненное значение равно 0,99.

В чем причина этого?Если в MySQL мы используем столбец типа float (m, n), где «m» и «n» - целые числа, то на что следует обращать внимание при хранении значений в этом столбце?

Ответы [ 4 ]

71 голосов
/ 02 ноября 2011

float(2,2) означает «использовать две цифры, две из которых используются после десятичной точки».

Следовательно, вы можете перейти от -0,99 до 0,99. Вы не можете вставить 10 в этот столбец, вам нужно как минимум две цифры перед запятой (поэтому float (4,2) или float (2,0)).

MySQL допускает нестандартный синтаксис: FLOAT (M, D) или REAL (M, D) или DOUBLE Прецизионные (M, D). Здесь «(M, D)» означает, что значения могут быть сохранены с до M цифр, из которых D цифр может быть после десятичной точка. Например, столбец, определенный как FLOAT (7,4), будет выглядеть -999,9999 при отображении. MySQL выполняет округление при сохранении значений, поэтому, если вы вставите 999.00009 в столбец FLOAT (7,4), приблизительный результат 999,0001.

14 голосов
/ 02 ноября 2011

MySQL допускает нестандартный синтаксис: FLOAT (M, D) или REAL (M, D) или DOUBLE PRECISION (M, D). Здесь «(M, D)» означает, что значения могут быть сохранены с общим числом M , из которых D может быть после десятичной точки .

3 голосов
/ 16 октября 2015

float (M, D), учитывая это, здесь M = max. нет. цифры разрешены (от 1 до 65), D = нет. цифр после запятой. так что вы можете изменить его float (5,2). так что float (2,2) не удовлетворяет вашу потребность вводить № 10

1 голос
/ 10 декабря 2018

В MySql, есть тип данных, как FLOAT (M, D). Где D является количество десятичных знаков и M - общее количество цифр (включая десятичные дроби). Десятичная точность может доходить до 24 мест для FLOAT, а диапазон M - от 1 до 65. Если синтаксис FLOAT (2,2), то здесь есть только два десятичных знака и нет места для действительного числа. Так что вы хотите добавить 10, вы можете использовать как FLOAT (5,2).

...