我正在尝试在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区间的值?
答案 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;
那就是我的'公式';)