编辑:问题已解决
我正在尝试移植一个流行的评级算法,该算法将Counter-Strike匹配的一些统计信息分析为PHP脚本。系统概要可以在下面的链接中找到(新闻帖的底部): http://www.hltv.org/?pageid=242&eventid=0
无论如何,所以我已经在PHP中设置了所有内容,而且我有理由相信一切都是正确的。出于计算目的,假设:
$rating1K = 5;
$rating2K = 8;
$rating3K = 3;
$rating4K = 0;
$rating5K = 0;
$kills = 30
$deaths = 19
$round = 30
这是我的代码:
$kpr = $kills / $round; // kills per round
$killRating = ($kills / $round / $kpr);
$spr = ($round - $deaths) / $round; // survivals per round
$survivalRating = ($round - $deaths) / $round / $spr;
$averageRMK = ((1*$rating1K + 4*$rating2K + 9*$rating3K + 16*$rating4K + 25*$rating5K)/$round);
$roundsWithMultipleKillsRating = ((1*$rating1K + 4*$rating2K + 9*$rating3K + 16*$rating4K + 25*$rating5K)/$round/$averageRMK);
$rating = ($killRating + 0.7 * $survivalRating + $roundsWithMultipleKillsRating) / 2.7;
echo $rating;
问题是$ killRating,$ survivalRating和$ roundsWithMultipleKillsRating似乎总是在PHP脚本中返回1,而如果我自己手动计算它们则不同。例如,如果我自己计算$ killRating,我得到1.5789等,但PHP返回“1”。
我能做些什么来解决这个问题?
非常感谢。
答案 0 :(得分:2)
你在计算错误...
$kpr = $kills / $round; // kills per round
$killRating = ($kills / $round / $kpr);
等于
$kpr = 30 / 30; // 1
$killRating = (30 / 30 / 1); //1
和
$spr = ($round - $deaths) / $round; // survivals per round
$survivalRating = ($round - $deaths) / $round / $spr;
等于
$spr = (30 - 19) / 30; // 0.36666
$survivalRating = (30 - 19) / 30 / 0.3666; // 1
你自己的计算错了。 PHP在这里做的一切都很好。
请注意kpr为$ kill / $ round,当你使用$ kill / $ round / $ kpr时,它总是为1.任何数字除以它等于1.我无法相信每个人都在谈论浮点数和整数甚至没有理解数学...
答案 1 :(得分:1)
$kills = 30;
$deaths = 19;
$round = 30;
$kpr = $kills / $round; // kills per round
$killRating = ($kills / $round / $kpr);
对于KPR:杀/圆= 30/30 = 1
对于KillRating:kills / round / kpr = 30/30/1 = 1(这只是kpr / kpr,为什么?)
PHP给你1作为该部分的答案,因为答案是1。
答案 2 :(得分:0)
确保您正在处理floats
而不是integers
。尝试投射它们。