我正在尝试存储许多大的数字,当它们作为INT值存储时会被截断。不幸的是,对于这种类型来说,它们太大了。
我正在考虑使用Base36编码来完成这一任务。解决这个问题还有别的办法吗?
发布于 2012-08-27 14:48:48
通常情况下,Base36编码会导致精度下降,因为基本转换过程需要浮点数操作。这不仅会破坏您的数据转换时的Base36,您还将消耗更多的空间(INT占用4个字节,许多Base36-encoded整数附近的32位无符号积分限制将占用更多)。
有关精度损失的详细说明,请参见PHP文档。
答:您应该在操作中使用比格纳。
发布于 2012-08-27 14:58:36
你可以用任何一种
大于INT的整数BIGINT数据类型:
BIGINT UNSIGNED:从0到2^64-1 (关于18 * 10^18)的值
BIGINT SIGNED:从-2^63到2^63-1 (关于-9 * 10^18到9 * 10^18)的值
或定点NUMERIC (也称为DECIMAL)数据类型:
DECIMAL(M, 0):从-(10^M-1)到10^M+1的值
M可以达到65,所以您可以存储多达65位小数的整数。
https://dba.stackexchange.com/questions/23203
复制相似问题