You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

技术求助:修正阶梯区间费率计算代码,实现数值分段求和

阶梯费率计算代码修正

计费规则

输入数值按以下阶梯区间计算费用,最终总和为各区间费用累加:

  • 0-500,000,000(5亿):该区间金额按8%计算
  • 500,000,001-2,000,000,000(20亿):超出5亿的部分按7%计算
  • 2,000,000,001-10,000,000,000(100亿):超出20亿的部分按5%计算
  • 10,000,000,001-30,000,000,000(300亿):超出100亿的部分按4%计算
  • 30,000,000,001及以上:超出300亿的部分按3%计算

区间费率表

区间范围费率
0-500M8%
>500M-2B7%
>2B-10B5%
>10B-30B4%
>30B3%

示例验证

输入3,500,000,000(35亿)时,计算过程如下:

区间范围计算金额费率区间费用
0-500M500,000,0008%40,000,000
>500M-2B1,500,000,0007%105,000,000
>2B-10B1,500,000,0005%75,000,000
总计3,500,000,000-220,000,000

原代码问题

你提供的代码逻辑完全错误,未处理阶梯区间的边界判断,直接对输入数值做无意义的减法和乘法,无法得到正确结果。

修正后的代码

function calculate(inputnumber: Int64): Extended;
const
  Bracket1 = 500000000;    // 5亿
  Bracket2 = 2000000000;   // 20亿
  Bracket3 = 10000000000;  // 100亿
  Bracket4 = 30000000000;  // 300亿
  Rate1 = 0.08;
  Rate2 = 0.07;
  Rate3 = 0.05;
  Rate4 = 0.04;
  Rate5 = 0.03;
var
  Part1, Part2, Part3, Part4, Part5: Extended;
begin
  // 计算第一区间:0-500M
  Part1 := Min(inputnumber, Bracket1) * Rate1;
  
  // 计算第二区间:>500M-2B,取超出5亿的部分,最多15亿,不足则取实际超出值,负数则为0
  Part2 := Max(0, Min(inputnumber - Bracket1, Bracket2 - Bracket1)) * Rate2;
  
  // 计算第三区间:>2B-10B,超出20亿的部分,最多80亿
  Part3 := Max(0, Min(inputnumber - Bracket2, Bracket3 - Bracket2)) * Rate3;
  
  // 计算第四区间:>10B-30B,超出100亿的部分,最多200亿
  Part4 := Max(0, Min(inputnumber - Bracket3, Bracket4 - Bracket3)) * Rate4;
  
  // 计算第五区间:>30B,超出300亿的部分
  Part5 := Max(0, inputnumber - Bracket4) * Rate5;
  
  // 累加所有区间费用
  Result := Part1 + Part2 + Part3 + Part4 + Part5;
end;

代码说明

  1. 用常量定义各区间边界和费率,提升代码可读性与可维护性
  2. 每个区间单独计算:
    • 用Min确保不超过当前区间的上限
    • 用Max(0, ...)确保当输入数值未达到区间下限时,该区间费用为0
  3. 最后累加所有区间的计算结果,得到总费用

内容的提问来源于stack exchange,提问作者Rohollah Bolboli

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 08:49:58