And*_*ris 3 php floating-point
结果怎么样?
intval("19.90"*100)
是
1989
而不是1990人们所期望的(PHP 5.2.14)?
1990
Art*_*cto 13
这是因为19.90在基数2中不能完全表示,最接近的近似值略低于19.90.
也就是说,这个最接近的近似值恰好是2 ^ -48×0x13E66666666666.如果您有兴趣,可以在这里以小数形式查看其确切值.
当你乘以100时intval会传播这个舍入误差.将强制浮点数转换为整数,这样的转换总是向0 舍入,这就是你看到的原因1989.请round改用.
intval
round
归档时间:
14 年,8 月 前
查看次数:
1536 次
最近记录: