gpt4 book ai didi

floating-point - PHP计算有缺陷

转载 作者:行者123 更新时间:2023-12-04 18:45:20 25 4
gpt4 key购买 nike

我正在编写一个小脚本来计算扣除后的税值。
我的应用程序有几个提供 CRUD 功能的 PHP 脚本。
我可以添加每月开支、总帐单收入,然后计算应缴多少公司税。

所有的数据都存储在一个数据库中,但是我在进行计算时遇到了一个有趣的问题,我将简化下面的代码,以便可以重现它:

$total = 1.0;
$tax = 0.2;
$expenses = 0.05;

echo (($total-$tax) + $expenses); // this echo's 0.85
// (1.0 - 0.2) + 0.05

if( (($total-$tax) + $expenses) == 0.85 ) {
echo "totals add up";
}
else {
echo "accounting error";
}

这个想法是所有的总数都按百分比计算。 1.0 是所讨论月份的收入的 100% 和费用是 5%(不是真的,但为了争论,因为我的实际计算有点复杂),无论哪种方式,这似乎都是最简单的我可以得到我的计算。

所以 100%( yield )- 20%(公司税)+ 5%(费用报销)应该让我得到总额的 85%。如第一个 echo 语句所示。

然而,if 语句跳出并显示“会计错误”。这里发生了什么?

最佳答案

这是浮点计算的常见问题。简而言之,某些十进制数无法用二进制准确描述。

常见的解决方案是坚持使用整数并以美分计算所有内容,并且仅在输出除以 100 时。

关于floating-point - PHP计算有缺陷,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15384830/

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