gpt4 book ai didi

PHP 将 float 转换为 int 类型的意外结果

转载 作者:IT王子 更新时间:2023-10-29 00:11:13 27 4
gpt4 key购买 nike

我试图在 php 中将 float 值转换为 int 值:

var_dump((int)(39.3 * 100.0)); //Returns 3929 but should be 3930!
var_dump((int)(39.2 * 100.0)); //Returns 3920

我可以使用 ceil 使其工作,但有人可以向我解释一下吗?

var_dump((int)ceil(39.3 * 100.0)); //Returns 3930

最佳答案

这是因为以 10 为基数具有有限表示的数字在 PHP 使用的浮点表示中可能具有也可能不具有精确表示。

>php -r "echo var_dump(sprintf('%.40F', 39.3 * 100.0));"string(45) "3929.9999999999995452526491135358810424804688"

由于 int 总是将数字向下舍入,表示中的一个小错误会使强制转换将其向下舍入一个数字,而您原本期望的是这样。

考虑使用 round相反。

关于PHP 将 float 转换为 int 类型的意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3385685/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com