为了账号安全,请及时绑定邮箱和手机立即绑定

php ceil取整的问题,求解。

php ceil取整的问题,求解。

手掌心 2019-04-14 10:42:59
`var_dump(ceil(2.2*100)/100);var_dump(ceil(strval(2.2*100))/100);`输出的结果分别是float2.21float2.2为什么这两种情况的值会不同?大神求解。
查看完整描述

2 回答

?
HUX布斯

TA贡献1876条经验 获得超6个赞

虽然还是不明白底层原理。浮点小数很多普通的十进制小数在二进制下并不是有限位的小数,有限的数值位并不能精确地记录数字的值所以你以为的2.20在echosprintf('%10.30f',2.20*100);的时候看到的会是220.000000000000028421709430404007
查看完整回答
反对 回复 2019-04-14
?
MMTTMM

TA贡献1869条经验 获得超4个赞

可能这和ceil二关,是浮点运算的问题吧。
结合@jsutking的实验,很容易理解第1个的答案是2.21,因为它是ceil(220.000000000000028421709430404007)的结果。
而第2个,估计是strval(2.2*100)的时候自动取了一个不大的精度,ceil(220.0000000000000)算出来都是220啦。
                            
查看完整回答
反对 回复 2019-04-14
  • 2 回答
  • 0 关注
  • 789 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信