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

求助:实现基于XP计算等级与0-99进度百分比的函数

完善等级进度百分比计算函数

首先从现有等级公式反推所需的XP计算逻辑:
已知等级公式为 level = (3/2) * Math.sqrt(xp),变形后可得到对应等级所需的最低XP公式:

xp = (level / 1.5) ** 2

基于这个公式,我们可以计算当前XP在所处等级区间内的进度,最终返回0-99的整数百分比:

// 等级计算函数
function calculateLevel(xp: number): number {
  return 3/2 * Math.sqrt(xp);
}

// 完善后的百分比计算函数(返回0-99)
function calculatePercentage(xp: number): number {
  const currentLevel = calculateLevel(xp);
  // 获取当前所处的整数等级(比如5.8对应5级)
  const currentFloorLevel = Math.floor(currentLevel);
  
  // 计算当前等级所需的最低XP
  const currentLevelXp = (currentFloorLevel / 1.5) ** 2;
  // 计算下一级所需的最低XP
  const nextLevelXp = ((currentFloorLevel + 1) / 1.5) ** 2;
  
  // 计算当前XP在当前等级区间内的进度比例
  const progressRatio = (xp - currentLevelXp) / (nextLevelXp - currentLevelXp);
  // 转换为0-99的整数百分比(避免出现100,因为达到100%时已升级)
  const percentage = Math.floor(progressRatio * 100);
  
  // 边界处理:确保返回值在0-99范围内
  return Math.max(0, Math.min(99, percentage));
}

逻辑说明:

  • 通过calculateLevel得到当前浮点等级,取整数部分确定当前所处的等级阶段
  • 计算当前等级和下一级的XP阈值,两者差值就是当前等级所需的总XP量
  • 用当前XP减去当前等级的最低XP,得到已积累的进度XP,再除以当前等级总XP量得到比例
  • 将比例转为整数百分比,通过Math.max和Math.min确保结果始终在0-99之间

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 05:55:29