Есть ли разница между типами данных MySQL DOUBLE (n, 0) и BIGINT (n)?

0

Есть ли причина использовать DOUBLE (n, 0) над BIGINT (n) в MySQL? Если данные никогда не будут иметь десятичную часть, есть ли какие-либо причины для хранения как ДВОЙНОЙ?

  • 1
    DOUBLE использует неточную плавающую точку, поэтому ее не следует использовать. Это может быть использовано, чтобы сэкономить место для огромного n, но я сомневаюсь в этом. BIGINT имеет максимальное значение 18-19, ДВОЙНОЕ еще меньше.
Теги:

1 ответ

2
Лучший ответ

Существует только одна причина когда-либо использовать DOUBLE или FLOAT в MySQL - если важны масштаб и/или эффективность хранения, но точность не такова. Это не ограничение MySQL, а скорее числа с плавающей запятой в целом, а именно, что они хранятся как приблизительные значения.

Целое число будет храниться чисто до примерно 2⁵³, что меньше, чем BIGINT. Большинство (хотя и не все) целых чисел за пределами этого диапазона будут сохранены как значение, которое только близко к правильному.

Числа с плавающей запятой иногда вызывают путаницу, поскольку они являются приблизительными и не сохраняются в виде точных значений. Значение с плавающей запятой, как указано в инструкции SQL, может быть не таким, как значение, представленное внутри. Попытки рассматривать значения с плавающей запятой как точные в сравнении могут привести к проблемам. Они также зависят от зависимостей платформы или реализации.

- Проблемы с значениями с плавающей запятой

Для целых чисел используйте один из типов *INT. Для десятичных знаков используйте DECIMAL.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню