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

PHP中如何计算当前经验在等级区间内的进度百分比?

PHP实现等级区间内经验进度百分比计算

正确计算逻辑

你之前的代码错误在于直接用当前经验除以区间最大值,没有把区间最小值作为进度的起点(0%)。正确的计算应该是:先算出当前经验超出区间最小值的部分,再除以整个区间的总长度,最后乘以100得到百分比。公式如下:
$currentProg = (($current_exp - $current_min) / ($current_max - $current_min)) * 100;

完整PHP代码(含异常处理)

// 示例参数
$current_exp = 26000;
$current_min = 25100;
$current_max = 34230;

// 计算区间总长度,避免除以0的错误
$level_range = $current_max - $current_min;

if ($level_range <= 0) {
    // 处理无效区间(比如配置错误导致最大值<=最小值)
    $currentProg = 0; // 或根据业务需求设为100%
} else {
    // 计算进度百分比
    $currentProg = (($current_exp - $current_min) / $level_range) * 100;
    // 可选:保留2位小数,优化显示
    $currentProg = round($currentProg, 2);
}

// 输出结果,示例中为9.77%
echo $currentProg;

逻辑说明

  • 当$current_exp等于$current_min时,结果为0%,完美匹配刚升级时的进度显示
  • 当$current_exp等于$current_max时,结果为100%,对应等级满经验状态
  • 加入区间长度判断,避免因配置错误出现除以0的致命错误
  • 用round()函数可以控制小数位数,让进度显示更美观

测试验证

用你提供的案例测试:

  1. 下一等级区间25100-34230,经验26000:
    ((26000-25100)/(34230-25100))*100 = 900/9130*100 ≈9.77%,符合实际预期的低进度
  2. 当前等级区间18750-25100,经验22000:
    ((22000-18750)/(25100-18750))*100=3250/6350*100≈51.18%,正确反映区间内的进度

内容的提问来源于stack exchange,提问作者jake oliver

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 16:00:27