php—大数位运算符

bzzcjhmw  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(306)

有没有办法检查大于“2147483648”的值?我必须处理数字高达“6.73297395398192e212”(2^707)。数据以float的形式存储在mysql数据库中。
也许我只是用错了搜索词或者没有一个好方法。

b1zrtrql

b1zrtrql1#

双精度值使用8个字节,显然不能在这些字节中存储707位(我假设您正在尝试这样做)。它可以通过一个近似值来存储1e308的值,这个近似值的精度会降低到较低的数字,这使得它对于存储您要对其执行位运算的数据来说是一个不好的选择。对于8字节的位运算,可以使用bigint。
由于MySQL8,mysql支持对任意长度的二进制字符串进行逐位操作,因此您应该以这种方式存储您的值—无论如何,位数组基本上是二进制字符串。但是你不能把它们当作数字来对待(比如像整数一样加或乘)。
对于早期的mysql版本,二进制字符串上的位操作限制为8字节。您仍然应该将位存储为二进制字符串(这允许轻松升级),并编写一个小函数来执行此操作,例如bytewise。

相关问题