价格+ PHP价格的20%

时间:2018-11-11 23:25:44

标签: php percentage multiplying

PHP新手在这里。我创建了一个根据价格范围提高价格的函数:

function update_price ( $price) {
  If (isset($price) ) {
    if ($price < 60 ) {
      return $price + 40;
    } 
  elseif ($price >= 60 && $price < 100) {
    return $price + 60;
  } 
  elseif ($price >= 100 && $price < 200) {
    return $price + 70;
  }
  elseif ($price >= 200 && $price < 300) {
    return $price + 80;
  }
  elseif ($price >= 300 && $price < 450) {
    return $price + 90;
  }
  elseif ($price >= 450) {
    return $price + ($price * .2);
  }
} 
}

当我导入CSV文件时调用该函数。除了函数的最后一部分,效果很好。我试图将那些合格产品的价格提高20%,所以我要采用$ price并加上($ price * .2)。但是产品628.74美元的价格为754,888.00美元,而不是754.88美元。

我做错了什么?

2 个答案:

答案 0 :(得分:0)

我不确定要怎么做才能导致该错误,但

测试代码

$base = 628.74;
$change = round($base * 0.2,2);
$new = $base + $change;
$allatonce = round(($base+($base*0.2)),2);
print_r(array($base,$change,$new,$allatonce));

输出

  

数组([0] => 628.74 [1] => 125.75 [2] => 754.49 [3] => 754.49)

同时满足您的需求

答案 1 :(得分:0)

PHP可以返回754.488,这与计算器返回的值相同: 628.74÷5 + 628.74 = 754.488

在这里,您需要将精度四舍五入为两个十进制数字,这可以通过round()函数来完成。

此外,我将这样编写您的函数:

    function update_price($price) {
        if((!$price) || (!is_numeric($price)) || ($price <= 0)) // initial price is not valid
                return -1;

        if($price >= 450) return $price+round($price/5, 2, PHP_ROUND_HALF_DOWN);
        if($price >= 300) return $price+90;
        if($price >= 200) return $price+80;
        if($price >= 100) return $price+70;
        if($price >= 60)  return $price+60;
        return $price+40;
}