gpt4 book ai didi

php - 格式化货币,通过乘以小时 * 费率计算(db 中的多个条目)

转载 作者:行者123 更新时间:2023-11-29 11:38:19 25 4
gpt4 key购买 nike

我现在遇到了一个难题,我不知道如何解决。我有两张不同的 table 。任务表和项目表。任务表保存所花费的时间(以秒为单位)、该特定任务的每小时费率以及该条目属于哪个项目。所以基本上是这样的:

{id} - {seconds} - {rate} - {projectId}

现在,我正在计算特定任务的每小时计费费率,如下所示:

function calc ($Totalseconds, $rate){
$minutes = $Totalseconds/60; //minutes
$money = $rate * ($minutes / 60); //hours
return $money;
}
...
$money = calc($task['seconds'], $task['rate']);
$value = number_format($money,2); //ex. 1,824.69

这当然效果很好......例如:

task1 is 1,824.69
task2 is 24.33
etc....

只要项目只有几个任务,那么该项目的总计费费率就是正确的。但是,当一个项目下有多个任务时,总值(value)与我使用计算器手动添加所有任务时有所不同......因此,在另一个页面中,我显示了特定项目的总计费率通过计算该特定项目的所有任务和费率。

我正在从数据库中为数组中的特定projectId“选择”所有任务,然后执行以下操作:

//array projArray has the sum of all seconds and rate for every task under a specific project
//for example a project has 10 tasks with rate $12 p/h and 2 task with $10 p/h
//so projArray has 2 arrays. One for the total time in seconds for the 10 tasks + their rate and one for the 2 tasks + their rate.
$total = 0;
foreach($projArray as $value) {
$total += calc($value['TotalTime'], $value['rate']);
}
$Totalvalue = number_format($total,2);

问题是......当我使用计算器手动添加特定项目的所有任务的计费费率时,我得到2,426.91,但最后一个函数返回2,426.92 相反。

两种情况下的秒数和速率都是正确的。我不明白为什么与最终值有差异?我想我在一个项目下承担的任务越多,差异就越大吗?现在我正在测试每个项目的 1-50 个任务...

最佳答案

示例数据:

a: 1,233
b: 1,233
c: 1,233

number_format((a + b + c), 2) = 3,70
number_format(a, 2) + number_format(b, 2) + number_format(c, 2) = 3,69

当您分别对每个任务调用 number_format 时,0,003 将被四舍五入。

您的计算中可能会发生类似的情况。

关于php - 格式化货币,通过乘以小时 * 费率计算(db 中的多个条目),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36247186/

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