前言
在PHP中,只有两种类型的数字:int和float。他们的数字依赖于系统,没有uint,不方便与其他系统通信。如果int溢出,自动转换为float,用科学的计数方法表示,小数点后只保留15位。之后数据被四舍五入,会对后面的数据操作产生影响,比如二进制转换、运算等都会出错。
对于PHP,有:
int:min ~ max :-9223372036854775808 ~ 922372036854775807(~ 92亿)
浮动:最小值~最大值:-1.7976931348623 E 308 ~ 1.7976931348623 E 308(~ 1.8E 308)
此时,我们需要考虑使用字符串形式进行相关处理。如果一定要进行数学计算,必须使用BC Math(任意精度数学)函数,可以在PHP手册:http://php.net/manual/zh/function.bcmod.php中自行查阅
这里有一个简单的例子,把一个长整数转换成二进制,把2 128转换成二进制。因为php的二进制转换函数也有一个最大值限制,这里用短除法把它转换成二进制,用原函数幂来求幂
输出结果如下。显然,精度不够,二进制错误
正确表述:
输出结果:
摘要
以上就是本文的全部内容。希望本文的内容对大家的学习或工作有一定的参考价值。谢谢你的支持。