Я не можу зрозуміти DECIMAL MySQL. Мені потрібен рядок, щоб він міг містити число десь від 00.0001 до 99.9999. Як я можу структурувати так, щоб він працював так?
Я не можу зрозуміти DECIMAL MySQL. Мені потрібен рядок, щоб він міг містити число десь від 00.0001 до 99.9999. Як я можу структурувати так, щоб він працював так?
Відповіді:
Стовпчики DOUBLE не збігаються зі стовпцями DECIMAL, і у вас виникнуть проблеми, якщо ви використовуєте стовпці DOUBLE для фінансових даних.
DOUBLE насправді є лише подвійною точністю (64 біт замість 32 бітової) версії FLOAT . Числа з плаваючою комою є приблизними поданнями дійсних чисел, і вони не є точними. Насправді, прості числа, такі як 0,01, не мають точного представлення у типах FLOAT або DOUBLE.
ДЕКІМАЛЬНІ стовпці - це точні уявлення, але вони займають набагато більше місця для набагато меншого діапазону можливих чисел. Для створення стовпця, здатного містити значення від 0,0001 до 99,9999, як ви запитували, знадобиться наступне твердження
CREATE TABLE your_table
(
your_column DECIMAL(6,4) NOT NULL
);
Визначення стовпців відповідає формату DECIMAL (M, D), де M - максимальна кількість цифр ( точність ), а D - кількість цифр праворуч від десяткової коми ( шкали ).
Це означає, що попередня команда створює стовпець, який приймає значення від -99,9999 до 99,9999. Ви також можете створити стовпчик "НЕВИЗНАЧЕНИЙ ДЕКІМАЛ" від 0,0000 до 99,9999.
Для отримання додаткової інформації про MySQL DECIMAL офіційні документи завжди чудовий ресурс.
Майте на увазі, що вся ця інформація справедлива для версій MySQL 5.0.3 і новіших версій. Якщо ви використовуєте попередні версії, вам дійсно слід оновити.
DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL]. Він поверне помилку поза межами діапазону для негативних значень. Ви також можете створити неподписані FLOAT та DOUBLE. Посібник: dev.mysql.com/doc/refman/5.0/uk/numeric-type-overview.html
Хоча відповіді вище здаються правильними, лише просте пояснення дасть вам уявлення про те, як це працює.
Припустимо, що ваш стовпець встановлений таким DECIMAL(13,4). Це означає, що стовпець матиме загальний розмір 13 цифр, де 4 з них будуть використані для точного подання.
Отже, підсумовуючи, для цього стовпця ви мали б максимальне значення: 999999999.9999
У коментарях є правильні рішення, але узагальнити їх у єдину відповідь:
Ви повинні використовувати DECIMAL (6,4).
Тоді ви можете мати 6 загальної кількості цифр, 2 до і 4 після десяткової точки (шкали). Принаймні відповідно до цього .
MySQL 5.x специфікація для десяткового типу даних є: DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL]. Відповідь, наведена вище, неправильна, кажучи, що непідписані десяткові знаки неможливі.
Щоб визначити поле , що дозволяє тільки непідписані знаки після коми, з загальною довжиною 6 цифр, 4 з яких є десятковими, ви повинні використовувати: DECIMAL (6,4) UNSIGNED.
Ви також можете створити неподписані (тобто не негативні) типи даних FLOAT та DOUBLE.