Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
DOUBLE(n,0)和BIGINT(n)MySQL数据类型之间有什么区别吗?_Mysql - Fatal编程技术网

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

DOUBLE(n,0)和BIGINT(n)MySQL数据类型之间有什么区别吗?,mysql,Mysql,有什么理由在MySQL中对BIGINT(n)使用DOUBLE(n,0)吗?如果数据永远不会有小数部分,有没有理由存储为双精度?在MySQL中使用DOUBLE或FLOAT只有一个原因——如果规模和/或存储效率很重要,但精度不重要。这不是MySQL的限制,而是一般浮点数的限制,即它们存储为近似值 整数将被干净地存储,最多只能存储大约2个⁵³,小于BIGINT。超出该范围的大多数(尽管不是全部)整数将存储为仅接近正确值的值 浮点数有时会引起混淆,因为它们是近似值,不能作为精确值存储。SQL语句中写入的

有什么理由在MySQL中对BIGINT(n)使用DOUBLE(n,0)吗?如果数据永远不会有小数部分,有没有理由存储为双精度?

在MySQL中使用
DOUBLE
FLOAT
只有一个原因——如果规模和/或存储效率很重要,但精度不重要。这不是MySQL的限制,而是一般浮点数的限制,即它们存储为近似值

整数将被干净地存储,最多只能存储大约2个⁵³,小于
BIGINT
。超出该范围的大多数(尽管不是全部)整数将存储为仅接近正确值的值

浮点数有时会引起混淆,因为它们是近似值,不能作为精确值存储。SQL语句中写入的浮点值可能与内部表示的值不同。在比较中试图将浮点值视为精确值可能会导致问题。它们还受平台或实现依赖性的影响

-


对于整数,请使用
*INT
类型之一。对于decimal,use
decimal

DOUBLE使用不精确的浮点,因此实际上不应该使用它。它可以用来为巨大的n节省空间,但我对此表示怀疑。BIGINT的最大n值为18-19,甚至更少。