所以这将是一个非常具体的问题,但我正在失去理智,因为我在这一天的大部分时间都在盯着这个。所以我在这里写了这个函数来计算价格相关佣金:
function commision($amount, $commision_arg = 0){
// $temp_amount = 0;
// $commision = 0;
if($amount > 999){
$temp_amount = $amount - 999;
$commision_arg += $temp_amount/100*1;
return commision(999, $commision_arg);
}else if($amount>249&&$amount<=999){
$temp_amount = $amount - 249;
$commision_arg += $temp_amount/100*3;
return commision(249, $commision_arg);
}else if($amount>49 && $amount<=249){
$temp_amount = $amount - 49;
$commision_arg += $temp_amount/100*5;
return commision(49, $commision_arg);
}else if($amount <= 49){
return number_format($commision_arg + 3.5, 2);
}
}
基本上,如果$amount
小于49,那么它只是平坦的3.5率,如果$amount
是49到249那么它是49-249范围内任何东西的统一费率3.5 + 5%。
我不确定这是否是这样做的好方法,但它确实有效。但是,使用此功能的另一种方法存在问题:
public function amountPayable(){
$amount = $this->uri->segment(3);
echo $amount - commision($amount);
}
这只是codeigniter控制器中的一个函数,由AJAX请求调用,它应该返回客户应付的金额,然后注入DOM。
这就是问题所在。
基本上,如果我通过等于$amount
的{{1}},我从100.000
返回的是amountPayable
,而它应该是:99.999
。如果我将98973.9
更改为echo $amount - commision($amount);
,那么我会回到1026.1。因此echo commision($amount);
函数返回正确的数字。但由于某种原因,commision()
(其中$amount - commision($amount);
= 100000)的评估结果为1。
这怎么可能?