MySQL - Хранение чисел, больше 1, с большим количеством десятичных знаков - PullRequest
1 голос
/ 29 марта 2011

Мне нужно использовать точное число, которое имеет много знаков после запятой.Если я использую тип decimal (потому что float не достаточно точен для хранения таких чисел), у меня может быть что-то вроде 0.003352466, и оно сохраняется точно.Однако, если я сделаю это число больше 1, я не смогу это сделать 1.003352466 не сохранится.

Как хранить оба типа чисел в одном столбце?

Например, если одна строка имеет значение 0.003352466, но в следующей строке необходимо сохранить 1.003352466, как мне это сделать?Я не смог выяснить это.

К вашему сведению: я изначально пробовал DECIMAL (10,10) и потерпел ту же ошибку, что и упомянутый выше.


РЕДАКТИРОВАТЬ:

Я попытался указать DECIMAL(2,10), но это не удалось, так как число слева должно быть равно или больше, чем справа.Так что я попытался DECIMAL(10,10), и это просто не удается записать в базу данных.Как я упоминал выше, он позволит мне ввести 0.003352466, но не 1.003352466

Решение ... сделать первое число больше второго, и оно будет работать!

DECIMAL(10,10) не удастсянаписать, как упоминалось, но DECIMAL(10,9) будет успешно.Пойди разберись.

Ответы [ 2 ]

3 голосов
/ 29 марта 2011

Возможно, у вас неправильное определение таблицы (хотите показать это?). Из руководства :

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

M - максимальное количество цифр ( точность). Диапазон значений от 1 до 65. (Старые версии MySQL разрешали диапазон от 1 до 254.)

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

Таким образом, DECIMAL(11,9) будет работать в этом случае, изменив при необходимости.

2 голосов
/ 29 марта 2011

Укажите точность декларации вашего поля.

DECIMAL(N, M) означает «N всего цифр с M десятичными знаками».

Скажем, DECIMAL(10, 2) позволит вам хранить числа от 0.00 до ±99999999.99.

...