算增长率的时候,用round来截取小数点后两位
但是后来去数据库看数据的时候,大部分数据都可以,但是有一部分出现错误
调试后发现
-8.04554643785644
round后变成
-8.04000000000001
这个bug出现几率还挺高
在另一个脚本中测试,同样的数据正常截取
算增长率的时候,用round来截取小数点后两位
但是后来去数据库看数据的时候,大部分数据都可以,但是有一部分出现错误
调试后发现
-8.04554643785644
round后变成
-8.04000000000001
这个bug出现几率还挺高
在另一个脚本中测试,同样的数据正常截取
方法一
直接将php.ini中precision改回14或12(windows中有的是12,各个版本可能不一样,手册中给的默认值是14)
方法二
如果没有权限修改php.ini或者只是要单独设置几个文件的话,可以在文件顶部加入:
ini_set('precision', 14);
方法三
上面方法一和方法二如果可以,当然是最省心省事的了。如果不行,则可以修改项目中的round方法,替换为sprintf方法:
$number = 3.43234325253;
echo sprintf('%.2f', $number);
1 回答4k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
2 回答2.2k 阅读✓ 已解决
1 回答1.4k 阅读✓ 已解决
2 回答2.2k 阅读
1 回答569 阅读✓ 已解决
785 阅读
不算bug吧,凡是涉及到浮点数问题肯定有精度误差的,用的时候注意一下就行了