Есть ли причина использовать DOUBLE (n, 0) над BIGINT (n) в MySQL? Если данные никогда не будут иметь десятичную часть, есть ли какие-либо причины для хранения как ДВОЙНОЙ?
Существует только одна причина когда-либо использовать DOUBLE
или FLOAT
в MySQL - если важны масштаб и/или эффективность хранения, но точность не такова. Это не ограничение MySQL, а скорее числа с плавающей запятой в целом, а именно, что они хранятся как приблизительные значения.
Целое число будет храниться чисто до примерно 2⁵³, что меньше, чем BIGINT
. Большинство (хотя и не все) целых чисел за пределами этого диапазона будут сохранены как значение, которое только близко к правильному.
Числа с плавающей запятой иногда вызывают путаницу, поскольку они являются приблизительными и не сохраняются в виде точных значений. Значение с плавающей запятой, как указано в инструкции SQL, может быть не таким, как значение, представленное внутри. Попытки рассматривать значения с плавающей запятой как точные в сравнении могут привести к проблемам. Они также зависят от зависимостей платформы или реализации.
Для целых чисел используйте один из типов *INT
. Для десятичных знаков используйте DECIMAL
.