function bereken_cijfer($behaalde_punten, $max_punten, $norm_percentage, $voldoende_cijfer, $decimalen) {
$norm = intval($norm_percentage) / 100;
$voldoende_score = $max_punten * $norm;
if ($behaalde_punten == $max_punten) {
return 10.0;
}
if ($behaalde_punten >= $voldoende_score) {
return round($voldoende_cijfer + (10 - $voldoende_cijfer) * (($behaalde_punten - $voldoende_score) / ($max_punten - $voldoende_score)), $decimalen);
} else {
return round(1 + ($voldoende_cijfer - 1) * ($behaalde_punten / $voldoende_score), $decimalen);
}
}
Een cijfer tussen de 1 en 10, afgerond op het aantal gekozen decimalen. Dus hopelijk een mooi resultaat!
norm = norm_percentage / 100
voldoende_score = max_punten * norm
Als behaalde_punten == max_punten, dan is het cijfer 10.0
cijfer = voldoende_cijfer + (10 - voldoende_cijfer) * (behaalde_punten - voldoende_score) / (max_punten - voldoende_score)
cijfer = 1 + (voldoende_cijfer - 1) * behaalde_punten / voldoende_score
Als je dit zelf wil doen, kun je de broncode downloaden. Let op, de code valt onder de GNU Affero GPL versie 3, dus houd je aan de licentie!