前端之家收集整理的这篇文章主要介绍了
PHP意外导致浮动到int类型转换,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想在
PHP中将float转换为int值:
@H_
404_1@var_dump((int)(39.3 * 100.0)); //Returns 3929 but should be 3930!
var_dump((int)(39.2 * 100.0)); //Returns 3920
我可以使用ceil来使它工作,但是有人可以向我解释一下吗?
@H_
404_1@var_dump((int)ceil(39.3 * 100.0)); //Returns 3930
这是因为在基数10中具有有限表示的数字可能或可能不具有
PHP使用的浮点表示中的精确表示.
看到
@H_
404_1@
>
PHP -r "echo var_dump(sprintf('%.40F',39.3 * 100.0));"
string(45) "3929.9999999999995452526491135358810424804688"
由于int总是将数字向下舍入,因此表示中的一个小错误会使得它会向下舍入一个您想要的数字.
请考虑使用round
.