Bewertungen Runden

emptynick

Erfahrenes Mitglied
Hallo,

ich habe mir jetzt ein Bewertungssystem geschrieben, aber beim ausgeben kommt es dann doch zu Schwierigkeiten.

Ich möchte natürlich nur volle oder halbe Zahlen ausgeben,
also wenn 3 User folgend bewertet haben:
3 Punkte, 3 Punkte, 4 Punkte,
was insgesamt 10 ergibt, also 3,3333 pro User, soll 3,5 ausgegeben werden.
Ich habe dieses mit folgender Funktion gelöst:
PHP:
function roundvote($vote) {
 $diff = $vote - floor($vote);
 if ($diff<=0.5) {
  $vote = floor($vote) + 0.5;
 };
 if ($diff>0.5) {
  $vote = floor($vote) + 1;
 };
 return $vote;
}
Doch wenn jetzt von 3 Usern insgesamt mit 0 bewertet wurde gibt er mir 0,5 aus.
Und genau da stehe ich auf dem Schlauch.
Kann mir da einer helfen?

MfG emptynick

P.S. Ich weiß, nicht perfekt formuliert, aber es ist auch ein schwerer Satz ;)
 
Hi

darf ich dich mal fragen, warum du denn 3,5 haben willst?

Wenn 3 Leute gevotet haben (mit deiner angebenen Punktzahl) dann kommt beim Durchschnitt 3,33 raus; wenn dann 3,5 da steht, wäre es nicht mehr der Durchschnitt und wäre unlogisch, da 3*3,5 10,5 wären; da fragt man sich als Besucher, wie man 0,5 wählen kann


Achja dein Problem liegt daran, dass du für $diff==0 kein if geschrieben hast.
Differenz == 0 ; nach deinem bisherigen Script ist 0 kleiner als 0,5 , dann werden ja 0,5 hinzuaddiert.
 
Zuletzt bearbeitet von einem Moderator:
Vielleicht so:

PHP:
function roundvote($vote) { 
 $diff = $vote - floor($vote); 
if ($diff==0) { 
  $vote = floor($vote) ; 
 };
 else if ($diff<=0.5) { 
  $vote = floor($vote) + 0.5; 
 }; 
 else  { 
  $vote = floor($vote) + 1; 
 }; 
 return $vote; 
}

Hoffe, der Ansatz hilft...
 
Vielleicht so:

PHP:
function roundvote($vote) { 
 $diff = $vote - floor($vote); 
if ($diff==0) { 
  $vote = floor($vote) ; 
 };
 else if ($diff<=0.5) { 
  $vote = floor($vote) + 0.5; 
 }; 
 else  { 
  $vote = floor($vote) + 1; 
 }; 
 return $vote; 
}

Hoffe, der Ansatz hilft...


Das war auch mein Ansatz; für $diff == 0 ; siehe mein geänderter Betrag

Dieb :P
 
Habs jetzt so gemacht:
PHP:
function roundvote($vote) { 
 $diff = $vote - floor($vote); 
if ($diff==0 || $diff < 0.25) { 
  $vote = floor($vote);
 };
 if ($diff<=0.5 && $diff >0.25) { 
  $vote = floor($vote) + 0.5; 
 }; 
 if ($diff>=0.5) { 
  $vote = floor($vote) + 1.0; 
 };
 return $vote; 
}
damit er nicht immer alles aufrundet (wie zum Beispiel 3.17).

Trotzdem Danke :)

emptynick
 
Zuletzt bearbeitet:
Zurück