Php 如何计算百分比
我的数学真的很差,我不会计算以下的东西。。 我有两个栏目,分别是Php 如何计算百分比,php,math,formula,percentage,Php,Math,Formula,Percentage,我的数学真的很差,我不会计算以下的东西。。 我有两个栏目,分别是experience和level 如果经验超过200,则级别将更新为1 如果经验超过500,则级别将更新为2 我的意思是我从不重置体验 所以,我有一个加载条图像,我必须计算出以百分比表示的时间长度。我试过这样的东西 函数lvlbar($xp,$level){ } 当您处于级别1以下时,它工作正常,但一旦您达到级别2计算出错,百分比从50、60开始,以此类推。。 我想这是我的公式。帮我解决一下如果你的问题是在3级,看看你的数学条件:
experience
和level
如果经验
超过200,则级别
将更新为1
如果经验
超过500,则级别
将更新为2
我的意思是我从不重置体验
所以,我有一个加载条图像,我必须计算出以百分比表示的时间长度。我试过这样的东西
函数lvlbar($xp,$level){
}
当您处于级别1
以下时,它工作正常,但一旦您达到级别2
计算出错,百分比从50、60开始,以此类推。。
我想这是我的公式。帮我解决一下如果你的问题是在3级,看看你的数学条件:
elseif($level == 3){
$percent = @round(($xp / 1400)*100);
}
如你所说,如果$xp=900,使用计算器将其除以1400,就像上面的计算一样
然后将结果乘以100,四舍五入的结果是64%,因此数学返回正确,这只是一个错误的等式 您的概念看起来不错,但有一个小错误。需要为每个级别重置体验栏。例如,当经验为350时,您希望显示50% 这意味着,你的公式是: 下一级别的百分比=当前级别的经验/提升到下一级别所需的经验 同样,例如:
当经验为350=(350-200)/(500-200)=50%时,达到2级的百分比我不完全理解这个问题,因此无法提出确切的解决方案。但这肯定是混乱的重复代码!我认为最好是在相同的时间水平上增加你除以的数字。因此,在不确切知道自己在做什么的情况下,比如:
function goUpLevel(){
$level++;
$experienceMax = $level * $experienceLevelMultiplier;
}
然后你发布的功能会简单得多,比如:
function lvlbar($xp, $level){
$percent = @round(($xp / $experienceMax)*100);
}
如果您无法计算$ExperienceLevel乘数的乘数,那么可能需要为每个级别设置一个值数组,即
$experienceLevelMultiplierArray = array (
1 => 10
2 => 15.5
);
这看起来更好,规模更好,更易于管理和理解!如果你能描述一下这个问题的背景,我肯定能进一步帮助你
免责声明:我很久没有使用PHP了,所以请忽略任何错误。我传达的是一个想法,而不是一个精确的解决方案。如果你想让百分比条回到0(不包括之前的经验),你需要减去之前水平的金额 此外,我建议为此使用switch() 试试这个:
function lvlbar($xp, $level){
switch($level) {
case 0:
$percent = @round(($xp / 200)*100);
case 1:
$percent = @round((($xp - 200) / 500)*100);
case 2:
$percent = @round((($xp - 500) / 900)*100);
case 3:
$percent = @round((($xp - 900) / 1400)*100);
case 4:
$percent = @round((($xp - 1400) / 1900)*100);
case 5:
$percent = @round((($xp - 1900) / 2500)*100);
case 6:
$percent = @round((($xp - 2500) / 3200)*100);
case 7:
$percent = @round((($xp - 3200) / 4000)*100);
case 8:
$percent = @round((($xp - 4000) / 4900)*100);
case 9:
$percent = @round((($xp - 4900) / 5800)*100);
case 10:
$percent = @round((($xp - 5800) / 6800)*100);
}
return $percent;
}
这就是我要做的。正如前面的海报所提到的,升级时你必须调整xp
function lvlbar($xp, $level){
$levels = array(
0 => 200,
1 => 500,
2 => 900,
3 => 1400,
4 => 1900,
5 => 2500,
6 => 3200,
7 => 4000,
8 => 4900,
9 => 5800,
10 => 6800
);
if (array_key_exists($level, $levels)) {
$lastlevelXp = !empty($levels[$level-1]) ? $levels[$level-1] : 0;
$adjustedXp = $xp - $lastlevelXp;
$adjustedLevelMax = $levels[$level] - $lastlevelXp;
$percent = round(($adjustedXp / $adjustedLevelMax)*100);
}
return !empty($percent) ? $percent : 0;
}
示例输出:
Level 0 with 95xp: 48%
Level 1 with 370xp: 57%
Level 2 with 640xp: 35%
Level 3 with 1150xp: 50%
Level 4 with 1405xp: 1%
Level 5 with 2400xp: 83%
Level 6 with 3180xp: 97%
Level 7 with 3999xp: 100%
100%时加载条的宽度是多少?图像正常。但问题是,如果我在3级,并且我有
900经验
百分比必须是0%,但公式给了我64%。我不明白。在问题旁边,你的问题没有包含任何演示该问题的工作示例(这是必须的),你有格式问题,并且你使用了@
错误抑制运算符,这不应该用PHP示例代码来完成。请让自己熟悉格式化工具,并编辑您的问题以改进它。此外,与您对问题的具体需求相比,问题标题过于宽泛。你不是问在数学中通常是如何做到的(计算百分比),而是问在代码转储中获得调试帮助。谢谢!这解决了问题:)
Level 0 with 95xp: 48%
Level 1 with 370xp: 57%
Level 2 with 640xp: 35%
Level 3 with 1150xp: 50%
Level 4 with 1405xp: 1%
Level 5 with 2400xp: 83%
Level 6 with 3180xp: 97%
Level 7 with 3999xp: 100%