今天测试突然提了一个很奇怪的bug,某个接口返回值有好多位小数,小数点溢出?
echo json_encode(0.1+0.7);
// 0.7999999999999999
json_encode 相关
然后试了下之后很神奇,然后就去查了下文档,发现了这
大概是序列化浮点数值时候存储的有效位数的意思,这个值设置为-1就会舍去这些数字。
浮点型本身的问题
什么是浮点型
浮点型(也叫浮点数 float,双精度数 double 或实数 real)
浮点数的字长和平台相关,尽管通常最大值是 1.8e308 并具有 14 位十进制数字的精度(64 位 IEEE 格式)
浮点型精度
浮点数的精度有限。尽管取决于系统,PHP 通常使用 IEEE 754 双精度格式,则由于取整而导致的最大相对误差为 1.11e-16。非基本数学运算可能会给出更大误差,并且要考虑到进行复合运算时的误差传