有没有一种方法可以检查比“ 2147483648”更大的值? 我必须使用最大为“ 6.73297395398192e212”(2 ^ 707)的数字。 数据以float形式存储在mysql数据库中。
也许我只是使用了错误的搜索词,或者没有一个好的方法。
答案 0 :(得分:1)
A double precision value使用8个字节,显然您不能在其中存储707位(我假设您正在尝试这样做)。它可以通过approximation存储1e308的值,而该精度会降低小数位数,这对于存储要对其进行按位运算的数据来说是一个不好的选择。要对8个字节进行按位运算,可以使用bigint。
自MySQL 8起,MySQL支持任意长度的bitwise operations on binary string,因此您应该以这种方式存储值-无论如何,位数组基本上都是二进制字符串。不过,您不能将它们视为数字(例如,将它们像整数一样相加或相乘)。
对于早期的MySQL版本,对二进制字符串的位操作限制为8个字节。您仍然应该将您的位存储为二进制字符串(这样可以轻松升级),并编写一个执行该操作的小函数,例如逐字节。