有没有办法检查比“2147483648”更大的值? 我必须处理最大为“6.73297395398192e212”(2^707)的数字。 数据以 float 形式存储在 mysql 数据库中。
也许我只是使用了错误的搜索词或者没有好的方法。
最佳答案
A double precision value使用 8 个字节,显然你不能在其中存储 707 位(我假设你正在尝试这样做)。它可以通过 approximation 存储值 1e308这会降低低位数字的精度,这使得它对于存储要进行按位运算的数据来说是一个糟糕的选择。对于8个字节的按位运算,可以使用bigint。
从 MySQL 8 开始,MySQL 支持 bitwise operations on binary string任意长度,所以你应该以这种方式存储你的值 - 无论如何,位数组基本上是一个二进制字符串。但您不能将它们视为数字(例如将它们像整数一样进行加法或乘法)。
对于早期的 MySQL 版本,二进制字符串上的位操作仅限于 8 个字节。您仍然应该将位存储为二进制字符串(这样可以轻松升级),并编写一个执行操作的小函数,例如按字节排列。
关于php - 大数按位运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51990628/