为什么这个简单的减法不起作用?

时间:2014-08-22 01:02:51

标签: php codeigniter

所以这将是一个非常具体的问题,但我正在失去理智,因为我在这一天的大部分时间都在盯着这个。所以我在这里写了这个函数来计算价格相关佣金:

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。

这怎么可能?

0 个答案:

没有答案