1

编辑:问题已解决

我正在尝试移植一种流行的评分算法,该算法将 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”。

我该怎么做才能解决这个问题?

非常感谢。

4

3 回答 3

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。我不敢相信每个人都在谈论浮点数和整数,甚至理解数学...

于 2012-10-05T11:40:07.853 回答
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。

于 2012-10-05T11:40:51.873 回答
0

确保您正在处理floats而不是integers. 尝试铸造它们。

于 2012-10-05T11:33:50.083 回答