Подтвердить что ты не робот

Как хранить десятичные числа в MySQL?

Я пробовал использовать DECIMAL с (2,2), но это не позволит мне использовать это.

Я просто хочу сохранить номер, например 7.50 или 10.50. Мне нужно сохранить оба числа после десятичного числа, но когда я обновляю базу данных, он сбрасывает значения до 0.99. Любые предложения?

4b9b3361

Ответ 2

Синтаксис ДЕСЯТИЧНЫЙ (M, D)

M - общая длина

D - цифры справа от десятичной точки

http://dev.mysql.com/doc/refman/5.6/en/fixed-point-types.html

Синтаксис объявления для столбца DECIMAL - DECIMAL (M, D). диапазоны значений для аргументов в MySQL 5.6 следующие:

М - максимальное количество цифр (точность). Имеет диапазон 1 до 65. (Старые версии MySQL допускали диапазон от 1 до 254.)

D - это число цифр справа от десятичной точки ( масштаб). Он имеет диапазон от 0 до 30 и должен быть не больше чем M.

Ответ 3

CREATE TABLE IF NOT EXISTS `table_name` (`id` int(11) NOT NULL AUTO_INCREMENT,`cost` DECIMAL( 10, 2 ) NOT NULL);

Это приведет к тому, что столбец затрат будет содержать в общей сложности 10 цифр, 8 до и 2 после десятичной точки.

Ответ 4

Из mysql doc:

Синтаксис объявления для столбца DECIMAL - DECIMAL (M, D). Диапазоны значений для аргументов следующие:

  • M - максимальное количество цифр (точность). Он имеет ряд От 1 до 65.
  • D - количество цифр справа от десятичной точки (шкалы). Он имеет диапазон от 0 до 30 и не должен превышать M.

NB: - M - нет. цифр до десятичной точки + общее число. цифр после десятичной точки.

В вашем случае 7.50 имеет общее количество не более 3 цифр, а 10.50 имеет общее число в 4 цифры. Но объявленный максимум нет. цифр для столбца равно 2, поэтому он может хранить максимум два знака. Вы даже не можете хранить 1, потому что он составляет 1.00, т.е. Всего 3 цифры. Таким образом, максимальное допустимое двузначное значение в столбце .99.

Если вы хотите сохранить xx.xx, тогда вы должны объявить (4, 2), где 4 - M, а 2 - D.

Если вы хотите сохранить любое число с максимально допустимым размером mysql, вы можете объявить столбец с (65, 30).

Максимальный номер. цифр до десятичной точки = M - D

Ответ 5

CREATE TABLE `salary` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`salary` DECIMAL(10,2) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

DECIMAL(10,2) указывает, что salary будет содержать в общей сложности 10 цифр, из которых 2 будет после десятичного числа.

то есть.

8 цифр до десятичной и 2 цифры после десятичной.

Ответ 6

Измените свое поле с INT на FLOAT