DOUBLE(n, 0) 和 BIGINT(n) MySQL 数据类型之间有什么区别?

5

在MySQL中,使用DOUBLE(n,0)和BIGINT(n)有什么区别呢?如果数据永远不会存在小数部分,是否有必要将其存储为DOUBLE呢?


2
DOUBLE 使用不精确的浮点数,因此实际上不应该使用。虽然它可以用于保存巨大的 n 的空间,但我对此表示怀疑。BIGINT 的最大 n 为 18-19,DOUBLE 的甚至更小。 - Joop Eggen
1个回答

5
在MySQL中,只有一个原因可以使用DOUBLEFLOAT - 如果比例和/或存储效率很重要,但精确度不重要。这不是MySQL的限制,而是浮点数的一般性质,即它们被存储为近似值。
整数最多只能干净地存储到约2⁵³,这比BIGINT还小。大多数(但不是全部)超出该范围的整数将被存储为仅接近正确的值。
浮点数有时会引起混淆,因为它们是近似值,而不是存储为精确值。 SQL语句中写入的浮点值可能与内部表示的值不同。 尝试在比较中将浮点值视为精确值可能会导致问题。 它们也受平台或实现依赖性的影响。
对于整数,请使用其中之一*INT类型。 对于十进制数,请使用DECIMAL

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接