Ответ 1
DECIMAL(18,0)
будет содержать 0 цифр после десятичной точки.
Используйте что-то вроде DECIMAL(18,4)
, а это должно быть прекрасно!
Это дает вам всего 18 цифр, 4 из которых после десятичной точки (и 14 до десятичной точки).
Я пытаюсь вычислить десятичный тип данных столбца в SQL Server. Мне нужно иметь возможность хранить такие значения, как 15,5, 26,9, 24,7, 9,8 и т.д.
Я назначил decimal(18, 0)
для типа данных столбца, но это не позволяет мне хранить эти значения.
Каков правильный способ сделать это?
DECIMAL(18,0)
будет содержать 0 цифр после десятичной точки.
Используйте что-то вроде DECIMAL(18,4)
, а это должно быть прекрасно!
Это дает вам всего 18 цифр, 4 из которых после десятичной точки (и 14 до десятичной точки).
Вы должны использовать следующее:
DECIMAL(m,a)
m
- количество цифр, которое может иметь десятичный знак.
a
- максимальное количество цифр, которое вы можете иметь после десятичной точки.
http://www.tsqltutorials.com/datatypes.php содержит описания для всех типов данных.
Настройки Decimal
- это его точность и масштаб или на обычном языке, сколько цифр может иметь число и сколько цифр вы хотите иметь справа от десятичной точки.
Итак, если вы поместите PI
в Decimal(18,0)
, он будет записан как 3
?
Если вы поместите PI
в Decimal(18,2)
, он будет записан как 3.14
?
Если вы положите PI
в Decimal(18,10)
, запишите как 3.1415926535
.
В большинстве случаев я использую десятичную (9,2), которая занимает наименьшее количество хранилищ (5 байтов) в десятичном типе sql.
Точность = > байты хранения
Он может хранить от 0 до 9 999 999,99 (7-значный infront + 2 цифры за десятичной точкой = всего 9 цифр), что достаточно велико для большинства значений.
В MySQL DB decimal(4,2)
разрешено вводить всего 4 цифры. Как вы видите в decimal(4,2)
, это означает, что вы можете ввести в общей сложности 4 цифры, из которых две цифры предназначены для сохранения после десятичной точки.
Итак, если вы введете 100.0 в базу данных MySQL, в нем появится ошибка типа "Вне диапазона значений для столбца".
Итак, вы можете вводить только этот диапазон: от 00.00 до 99.99.
Другие ответы правильные. Предполагая, что ваши примеры отражают весь спектр возможностей, которые вы хотите, DECIMAL(3, 1)
. Или, DECIMAL(14, 1)
позволит в общей сложности 14 цифр. Это ваша работа, чтобы думать о том, что достаточно.
request.input("name", sql.Decimal, 155.33) // decimal(18, 0)
request.input("name", sql.Decimal(10), 155.33) // decimal(10, 0)
request.input("name", sql.Decimal(10, 2), 155.33) // decimal(10, 2)