约束间隔之间的比例

时间:2013-03-05 20:33:23

标签: php rating

我正在尝试在php中创建一个用于集成评级系统的小类,而我却陷入了一个可能很简单的问题。 我希望显示0到5之间的评级,但投票可以是1到10或1到12之间的任何区间。 例如,如果间隔是选票是1-12并且总得分/总票数是6我想要实际显示2.5 我正在使用这个

$rating = number_format(round(($total_score/$total_votes)*2)/2,1);

那我怎么能让它只显示0-5区间的值?

2 个答案:

答案 0 :(得分:0)

$fromminrate = 1;
$frommaxrate = 12;
$tominrate = 0;
$tomaxrate = 5;
$rating = $tominrate + (
     ((($total_score/$total_votes)-$fromminrate)
     / ($frommaxrate-$fromminrate))
     * ($tomaxrate-$tominrate));

答案 1 :(得分:0)

使用这样的简单百分比计算:

<?php

$number_of_votes = 10; // real votes
$max_number_of_votes = 12; // vote range
$max_display_votes = 5; // display range

$perc = $max_display_votes * $number_of_votes / $max_number_of_votes;
$display = intval(round($perc)); // optional, round and convert to int

echo $display;

作为一个投票范围 - 从本质上说 - 从零开始,您不必担心下边界并且可以简化您的计算。 ;)


说明:

$ number_of_votes(10)与$ max_number_of_votes(12)相关,因为有问题的值($ display)与$ max_display_votes(5)相关。在数学中:

$number_of_votes / $max_number_of_votes == $display / $max_display_votes;

或在示例中:

10 / 12 = $display / 5;

您可以通过乘以5来转换此术语:

10 * 5 / 12 = $display;

那就是我的'公式';)