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

MySQL: предпочтительный тип столбца для (товарных) цен?

В MySQL, какой предпочтительный тип столбца для хранения цены продукта (или валют вообще)? Google узнал, что DECIMAL FLOAT часто используется, но мне интересно, какой из них лучше.

Я храню цены в диапазоне от 0,01 до 25,00. Конечно, более высокие значения также могут быть возможны. (Примечание: я не прошу код для копирования-макаронных изделий, я просто даю вам больше информации, которая могла бы помочь вам сформировать более полный ответ).

Спасибо

4b9b3361

Ответ 1

Десятичный - это тот, который я использовал бы

Основное различие между Десятичный/Числовой и Поплавок: Float Тип данных приблизительного числа, который означает, что не все значения в данных тип диапазона может быть представлен точно. Десятичная/числовая - фиксированная точность тип данных, что означает, что все значения в типе типа данных могут быть точно представлены с точностью и масштаб.

Преобразование из десятичного или числового в float может привести к некоторой потере точность. Для десятичных или числовых типы данных, SQL Server рассматривает каждый конкретная комбинация точности и как другой тип данных. DECIMAL (4,2) и DECIMAL (6,4) являются разные типы данных. Это значит, что 11.22 и 11.2222 - разные типы, хотя это не относится к float. Для FLOAT (6) 11.22 и 11.2222 те же типы данных.

Ответ 2

Поле типа "Десятичный" является хорошим.

Если у вас есть более высокие цены, вы можете использовать product_price decimal(6,2) NOT NULL,, то есть вы можете хранить цены до 6 цифр с десятичной точкой до 2 цифр.

Максимальное значение для поля product_price decimal(6,2) NOT NULL, будет хранить цену до 9999.99

Если все цены между 0.01 и 25.00, тогда product_price decimal(4,2) NOT NULL, будет хорошо, но если у вас будут более высокие цены, вы можете установить любые значения в decimal(4,2).

Ответ 3

Я бы не использовал float, поскольку он может давать ошибки округления, так как это тип с плавающей точкой.

Используйте десятичное значение:

"Типы DECIMAL и NUMERIC являются используется для хранения значений, для которых оно важно сохранить точную точность, например, с денежной данные".

см. http://dev.mysql.com/doc/mysql/en/numeric-types.html

Ответ 4

Я предпочитаю INT (цена, умноженная на 100), которая решает проблему с плавающей запятой в другом программном обеспечении.

Ответ 5

Десятичная дробь неверна, потому что если вы хотите установить десятичную цену 12.99, установите ее в 13.00. Так что это неправильно, но если вы используете float, вы можете сохранить ее как 12.99 Таким образом, правильный ответ - float и varchar.