我想编写一段代码,将一个数字分为几个不同的区间,并对每个区间进行特殊计算,如下所示。
最后,显示所有获得的数字的总和。我尝试了几种方法,但没有成功。
**计算公式:
1-如果数字小于五亿,则按输入数字的8%计算。
2-对于超过五亿到二十亿的部分,计算输入数字的7%,并将其与之前的结果相加。
3-对于超过20亿到100亿的部分,计算输入数字的5%,并将其与之前的结果相加。
4-对于超过百亿到三百亿的部分,计算输入数字的4%,并将其与之前的结果相加。
5-从 300 亿及以上,计算输入数字的 3%,并将其添加到之前的结果中。
例如,对于数字 3,500,000,000,答案应为 220,000,000。
我写的代码:
function calculate(inputnumber: Int64): Extended;
var a,b,c,d : Extended;
begin
d:= (INPUTNUMBER - 500000000 ) ;
c:= (d - 2000000000 ) * (INPUTNUMBER * 0.07);
b:= (c - 10000000000) * (INPUTNUMBER * 0.05);
a:=(b - 30000000000) * (INPUTNUMBER * 0.04);
Result:= a+b+c+(d * 0.08);
end
我想编写一段代码,将一个数字分为几个不同的区间,并对每个区间进行特殊计算,如下所示。最后,显示所有获得的数字的总和。
当你向SO提出家庭作业问题时,公平地表明你的问题涉及家庭作业。请以后也这样做。
您的任务是为每个间隔编写代码,如果您以从最高资本价值到零的阶梯方式进行操作,那么阶梯的入口点取决于资本价值。
每个步骤如下所示。
// step 5
if capital > 30000000000 then // > 30 billion
begin
interest := interest + 0.03 * (capital-30000000000);
capital := 30000000000; // remaining (unaccounted) capital falling through
end;
下面的步骤会有条件
// step 4
if capital > 10000000000 then // > 10 billion
begin
// interest calculation with applicable interest rate
// remaining capital (10 billion) to fall through again to following step
end;
最后又经过几步,最后一步:
// step 1
if capital > 0 then
begin
interest := interest + 0.08 * (capital);
end;
这给出了您期望的结果。