价格 + PHP 价格的 20%

Price + 20% of price in PHP

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 美元。

我做错了什么?

我不确定你做了什么才会给你这个错误,但是

测试代码

$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));

输出

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

一次全部的价值将满足您的需求。

没关系 PHP returns 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;
}