Farklı katmanlarındaki gelir payı hesaplanırken

2 Cevap php

Ben Örneğin widget 10000 $ değerinde satmak ... farklı katmanlı düzeylerde gelir hesaplayabilirsiniz bir fonksiyon yazmaya çalışıyorum. 1 $ 'dan herhangi bir kazanç - 999 $ biz 1000 $% 50 alacak - 4999 $ biz 5000 $% 25 alır - 9999 $, biz% 10, 10.000 $ alacak - 19.999 $% 5.

Yüzde nihai değerine göre alınmaz. Eğer 10.000 $ kazandı Yani eğer sadece% 10 sütunun içine girmemektedir. İlk 1000 $% 50, bir sonraki 5000 $% 25, ​​bir sonraki 4000 $% 10 tabidir.

Şimdiden teşekkürler.

** Final çalışma kodu. Yardımın için teşekkürler!

    $input = 10000;

	$tiers = array('1000' => .5, '5000' => .25, '10000' => .1, '20000' => .05, '22000' => .01);

	$accounted_for = 0;
	$total_share = 0;

	$tier = each($tiers);
	while($accounted_for < $input) {

		$cutoff = $tier[0];
		$percent = $tier[1];

		$level = (min($cutoff, $input) - $accounted_for) * $percent;

		$total_share += $level;

		$accounted_for = $cutoff;

		$tier = each($tiers);
	}

	return $total_share;

2 Cevap

Eğer bir dil belirtilmeyen bu yana, burada bazı pseudocode bulunuyor:

input = 99999

tiers = [list of (%,cutoff) tuples]

accounted_for = 0
total_share = 0

while accounted_for is less than input:
    percent,cutoff = next element of tiers
    total_share += (min(cutoff,input) - accounted_for) * percent
    accounted_for = cutoff

return total_share

IRS daha fazla yapmanız alır dışında neler yapıyorsun, IRS vergi kodu nasıl işliyor. Bu modelde komisyon daha satmak aşağı kayar. Eğer PHP kategorisinde koymak beri ben size PHP cevap istiyorum varsayarak yaşıyorum. Eğer farklı satış insanlar için farklı programları var istedim Eğer katman Array fonksiyonu için bir argüman yapabilir.

function calculateEarnings($grossAmountSold) {
    $earnings = 0;
    $accountedFor = 0;
    $tiers = array('1000' => .5, '5000' => .25, '10000' => .1, '20000' => .05, '22000' => .01);

    while($accountedFor < $grossAmountSold) {
    	list($cutoff, $commissionRate) = each($tiers);
    	if($grossAmountSold < $cutoff) {
    		$sold = $grossAmountSold - $accountedFor;
    	} else {
    		$sold = $cutoff - $accountedFor;
    	}
    	$earnings += $sold * $commissionRate;
    	$accountedFor += $cutoff;
    }
    return $earnings;
}