наименьший тип MySQL, который принимает один десятичный - PullRequest
1 голос
/ 25 апреля 2010

База данных новичка здесь. Я настраиваю таблицу MySQL. Одно из полей будет принимать значение с шагом 0,5. например 0,5, 1,0, 1,5, 2,0, .... 200,5 и т. Д.

Я пробовал int, но он не фиксирует десятичные дроби.

`value` int(10), 

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

Я также подумал, что, поскольку десятичная дробь всегда будет 0,5, если вообще я мог бы сохранить ее в отдельном логическом поле? Таким образом, у меня было бы 2 поля вместо этого. Это глупая или несколько сложная идея? Я не знаю, действительно ли это экономит мне память, и теперь может стать медленнее, когда я получаю доступ к 2 полям вместо 1

`value` int(10), 
`half` bool,  //or something similar to boolean

Каковы ваши предложения, ребята? Первый вариант лучше, и какой наименьший тип данных в этом случае даст мне 0,5?

Ответы [ 3 ]

7 голосов
/ 25 апреля 2010

Вы захотите посмотреть на тип DECIMAL(P,S).

Для этого P - это точность, а S - это масштаб. Вы можете думать о P как о количестве цифр (как до, так и после десятичной точки), а о S - о количестве цифр после десятичной точки.

Так, например, для хранения от -999,99 до 999,99 вам понадобится 5 цифр точности и шкала 2, поэтому вы должны использовать DECIMAL(5, 2).

В вашем случае вам понадобится DECIMAL(n, 1), где n - это количество цифр, которое вам нужно до десятичной точки + 1 для десятичной дроби.

1 голос
/ 25 апреля 2010

Помимо использования DECIMAL, вы могли бы хранить десятикратное значение в столбце INT (который я бы думал, что может быть более эффективным.)

  • 0,5 => 5
  • 201,5 => 2015
  • и т.д.
1 голос
/ 25 апреля 2010

Вы можете использовать

DECIMAL(N,1)

Где N - это точность, представляющая максимальное количество значащих цифр, которые могут быть сохранены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...