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

мы пытались использовать DECIMAL с (2,2), но он выигралне позволяй мне использовать это.

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

 Arun10 февр. 2015 г., 08:25

Ответы на вопрос(6)

Из MySQL док:

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

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

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

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

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

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

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

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

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

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.

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

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 цифры после запятой.

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

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

Решение Вопроса

Первая цифраDECIMAL декларация являетсяВсего цифры. Вы, вероятно, хотите использоватьDECIMAL (4, 2), Это позволяет использовать до двух цифр перед десятичной и после двух.

Документация:https://dev.mysql.com/doc/refman/5.7/en/precision-math-decimal-characteristics.html

Ваш ответ на вопрос