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美元。
我做错了什么?
答案 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;
}