【发布时间】:2013-09-01 14:44:55
【问题描述】:
我一直用这种方法来完成这种排序, 但对我来说看起来不正确
usort($array, function($team1, $team2){
$t1 = ($team1->points * 1000) + ($team1->goalsFor - $team1->goalsAgainst);
$t2 = ($team2->points * 1000) + ($team2->goalsFor - $team2->goalsAgainst);
if($t1 == $t2) return 0;
return $t1 > $t2 ? 1 : -1;
});
此方法的替代方法是使用 str_pad,其作用几乎相同
基本上我所做的是将排序主题用零分隔
$t1 = 32008; // 32 points with a GD of 8
$t2 = 32003; // 32 points with a GD of 3
但是,如果一支球队出现了奇怪的目标差异怎么办?
$t1 = 32008; // 32 points with a GD of 8
$t2 = 33000; // 32 points with a GD of 1000
显然这不可能发生,但这是一个例子
这是一个好方法吗? 32-64 位/浮点数 [im] 精度限制如何?
有人对此有什么建议吗?
谢谢你:)
请随意改进标题
【问题讨论】:
标签: sorting math language-agnostic theory