我是一个新手,很难弄清楚如何处理问题(或者问这个问题-如果我不清楚,请原谅)。
长期薪酬是根据服务年限计算的:<10=0
10 but <15 = 0.015
15 but <20 = 0.0225
20 but <25 = 0.325
>=25 = .0450
我需要计算一个给定服务起始年和服务结束年的范围内的长期薪酬总额。
例如,如果我从11年的服务开始,到18
年的服务结束,我需要将工资乘以"10 but <15
"的费率加上该范围内的年数(在本例中为15-11=4
),再将其加上工资乘以"15 but <20"
的费率乘以该范围内年数(本例为20-18=2
)。
我不知道该如何构建。我可以做大量的if/elseif
声明,但我知道一定有更好的方法。如果有人能为我指明大致方向(有没有办法查找某个范围内的数字并返回值?)我将不胜感激。
当涉及到算法时,首先要手动求解(自己分步求解,而不是计算机求解)。
尽可能多地这样做,以弄清楚它是如何解决的。
例如,对于11到18年(含)的情况,你会得到:
year 11; 0.015
year 12; 0.015
year 13; 0.015
year 14; 0.015
year 15; 0.0225
year 16; 0.0225
year 17; 0.0225
year 18; 0.0225
总寿命工资为(4*0.015)+(4*0.0225)=0.15
一定要注意你的数字的细节(你发布的20到24年的数字0.325可能是0.0325)
在开始编程之前,你需要非常自信地知道几个测试用例的正确答案是什么。这样,你就可以验证程序的结果是正确的。
对于编写代码,可能有两种方法:
将其写在循环中:
for ($x = 11; $x <= 18; $x++) { (some if/then statements) }
计算每个范围内的年数,并乘以结果。您至少需要使用最小和最大功能:
$totalpay = 0; $totalpay += 0.015 * (you figure out the number of years in 10 to 14 years range); $totalpay += 0.0225 * (you figure out the number of years in 15 to 19 years range); etc
这看起来像是第一年的计算机编程练习。与其给你一个有效的解决方案,我更愿意解释如何自己写(这样你就可以从练习中受益)。