DOUBLE(n,0)和BIGINT(n)MySQL数据类型之间有什么区别吗?
有什么理由在MySQL中对BIGINT(n)使用DOUBLE(n,0)吗?如果数据永远不会有小数部分,有没有理由存储为双精度?在MySQL中使用DOUBLE(n,0)和BIGINT(n)MySQL数据类型之间有什么区别吗?,mysql,Mysql,有什么理由在MySQL中对BIGINT(n)使用DOUBLE(n,0)吗?如果数据永远不会有小数部分,有没有理由存储为双精度?在MySQL中使用DOUBLE或FLOAT只有一个原因——如果规模和/或存储效率很重要,但精度不重要。这不是MySQL的限制,而是一般浮点数的限制,即它们存储为近似值 整数将被干净地存储,最多只能存储大约2个⁵³,小于BIGINT。超出该范围的大多数(尽管不是全部)整数将存储为仅接近正确值的值 浮点数有时会引起混淆,因为它们是近似值,不能作为精确值存储。SQL语句中写入的
DOUBLE
或FLOAT
只有一个原因——如果规模和/或存储效率很重要,但精度不重要。这不是MySQL的限制,而是一般浮点数的限制,即它们存储为近似值
整数将被干净地存储,最多只能存储大约2个⁵³,小于BIGINT
。超出该范围的大多数(尽管不是全部)整数将存储为仅接近正确值的值
浮点数有时会引起混淆,因为它们是近似值,不能作为精确值存储。SQL语句中写入的浮点值可能与内部表示的值不同。在比较中试图将浮点值视为精确值可能会导致问题。它们还受平台或实现依赖性的影响
-
对于整数,请使用
*INT
类型之一。对于decimal,usedecimal
DOUBLE使用不精确的浮点,因此实际上不应该使用它。它可以用来为巨大的n节省空间,但我对此表示怀疑。BIGINT的最大n值为18-19,甚至更少。