Problem mit Prozentrechnung
DiamondDog
- php
0 JürgenB0 DiamondDog0 JürgenB
0 Encoder0 JürgenB
0 Der Martin0 DiamondDog0 Der Martin0 dedlfix
Hallo Leute,
ich hab ein kleines Problem mit meiner Prozentrechung und zwar können User abstimmen, ob etwas gut oder schlecht ist.
Das Problem liegt nachher bei der Auswertung und Anzeige. Haben zB. 15 User für gut gestimmt und 0 für schelcht, errechnet sich komischerweise dann ein Prozentwert von:
Gut 90 %
Schlecht 0%
Normal müsten es ja 100% gut sein und 0% schlecht.
Hier mal mein Script:
if($row['votes_user'] > 0){
$prozent_good = bcdiv('100',$row['votes_user']);
$prozent_good = round(bcmul($prozent_good,$row['votes_good']));
$prozent_bad = bcdiv('100',$row['votes_user']);
$prozent_bad = round(bcmul($prozent_bad,$row['votes_bad']));
}else{
$prozent_good = 0;
$prozent_bad = 0;
}
Hoffe das ihr mir da vll weiterhelfen könnt. Danke schon mal an alle.
Mfg
Hallo DiamondDog,
ich verstehe deinen PHP-Code nicht, daher nur die Basics:
alle = anzahl_gut + anzahl_schlecht
prozent_gut = 100 * anzahl_gut / alle
prozent_schlecht = 100 * anzahl_schlecht / alle
Die Ergebnisse dann noch nach Bedarf runden.
siehe auch Wikipedia: Prozentrechnung
Gruß, Jürgen
Hallo DiamondDog,
ich verstehe deinen PHP-Code nicht, daher nur die Basics:
Hallo Jürgen,
zur Erklärung:
if($row['votes_user'] > 0){
$prozent_good = bcdiv('100',$row['votes_user']);
$prozent_good = round(bcmul($prozent_good,$row['votes_good']));
$prozent_bad = bcdiv('100',$row['votes_user']);
$prozent_bad = round(bcmul($prozent_bad,$row['votes_bad']));
}else{
$prozent_good = 0;
$prozent_bad = 0;
}
Alle = $row['votes_user']
Gutestimmen = $row['votes_good']
Schlechtestimmen = $row['votes_bad']
Die Rechnung ist:
Ergebniss = 100 / Alle
Ausgabe = Ergebniss * Gutestimmen
So rechnet der PHP Code oben, und wenn ich dich richtig verstehe, dann müste es so sein:
$prozent_good = bcdiv($row['votes_good'],bcmul(100,$row['votes_user']));
Oder bin ich gerade etwas durcheinander?
Mfg
Hallo DiamondDog,
dann hilft nur debuggen: alle Werte und Zwischenergebnisse anzeigen.
Gruß, Jürgen
prozent_gut = 100 * anzahl_gut / alle
prozent_schlecht = 100 * anzahl_schlecht / alle
Die Ergebnisse dann noch nach Bedarf runden.
Und dabei auch schauen dass immer 100% rauskommen.
Je nach Rundung könnte die Summe nicht mehr passen, das sieht dann recht seltsam aus wenn jemand mitrechnet.
Hallo Encoder,
Die Ergebnisse dann noch nach Bedarf runden.
Und dabei auch schauen dass immer 100% rauskommen.
Je nach Rundung könnte die Summe nicht mehr passen, das sieht dann recht seltsam aus wenn jemand mitrechnet.
also politisch runden.
Gruß, Jürgen
Hallo,
Je nach Rundung könnte die Summe nicht mehr passen, das sieht dann recht seltsam aus wenn jemand mitrechnet.
also politisch runden.
also zum Beispiel 62.6% Ja, 36.7% Nein, 0.7% Sonstige. ;-)
Ciao,
Martin
Moin,
ich hab ein kleines Problem mit meiner Prozentrechung
ich habe vor allem den Eindruck, die machst die Rechnung wahnsinnig kompliziert. Deine User können also mit "gut" oder "schlecht" stimmen?
Dann ist der Anteil "gut" = (Anzahl der Gut-Stimmen) / (Anzahl der Stimmen gesamt)
Entsprechend mit den Schlecht-Stimmen - wobei die alternativ als (1 - Anteil "gut") zu errechnen wären, sofern es keine Enthaltungen gibt.
$prozent_good = bcdiv('100',$row['votes_user']);
$prozent_good = round(bcmul($prozent_good,$row['votes_good']));
Warum verwendest du überhaupt bcmul() und bcdiv() anstatt herkömmlicher Multiplikation und Division?
So long,
Martin
Deine User können also mit "gut" oder "schlecht" stimmen?
richtig nur gut oder schlecht.
Dann ist der Anteil "gut" = (Anzahl der Gut-Stimmen) / (Anzahl der Stimmen gesamt)
Das wäre bei 15 Stimmen und 15 mal gut, ja dann = 0 oder nicht?
Entsprechend mit den Schlecht-Stimmen - wobei die alternativ als (1 - Anteil "gut") zu errechnen wären, sofern es keine Enthaltungen gibt.
Nein Enthaltungen gibt es nicht.
Warum verwendest du überhaupt bcmul() und bcdiv() anstatt herkömmlicher Multiplikation und Division?
Wieso nicht? Macht doch keinen Unterschied oder?
Mfg Dog
Hallo,
Dann ist der Anteil "gut" = (Anzahl der Gut-Stimmen) / (Anzahl der Stimmen gesamt)
Das wäre bei 15 Stimmen und 15 mal gut, ja dann = 0 oder nicht?
nein, das wäre ja seltsam.
15 / 15 = 1 = 100%
Warum verwendest du überhaupt bcmul() und bcdiv() anstatt herkömmlicher Multiplikation und Division?
Wieso nicht? Macht doch keinen Unterschied oder?
Naja, es macht die Sache komplizierter und unübersichtlicher. Gerade zum Nachvollziehen ...
Ciao,
Martin
Naja, es macht die Sache komplizierter und unübersichtlicher. Gerade zum Nachvollziehen ...
Stimmt deswegen im Theard weiter unten vereinfacht und funktionel.
Hi!
Warum verwendest du überhaupt bcmul() und bcdiv() anstatt herkömmlicher Multiplikation und Division?
Wieso nicht? Macht doch keinen Unterschied oder?
Nein? Es ist ungefähr so ein Unterschied wie zwischen einer Rechnung auf Papier und einer mit einem Taschenrechner. Zudem wirst du den Unterschied und des Rätsels Lösung sehen, wenn du dir das Ergebnis des ersten Rechenschrittes anschaust:
$prozent_good = bcdiv('100',$row['votes_user']);
also
var_dump(bcdiv('100','15');
mit
var_dump(100/15);
vergleichst.
Lo!