PHP Preis divverenz in Prozent berechnen
-
Guten Morgen,
Ich möchte eine Preisdifferenz in Prozent ausgeben.
Das funktioniert soweit auch.Das Problem besteht darin, je näher die Preise zusammen liegen, desto ungenauer wird die Prozentangabe.
z.B.
Preis = 4,95; Angebots_Preis = 4,20; $Rabatt1 = ($Preis / $Angebots_Preis) * 100; $RabattZahl = round($Rabatt1,0); //Gesamtpreis Formatieren
Ergebnis 0%
Liegen die Preise weiter auseinander funktioniert die Sache besser.
Wöran könnte dies liegen?
==>Eisbeer<==
-
Nur als Tip.
Die Preisdiff sind 0,75 €.Jetzt kannst DU ausrechnen wieviel Prozent 0,75€ von einem Preis 4,95€ also 100% sind.
-
Leicht am Thema vorbei ???
Die Formel kann man auch umstellen.
Es geht nur um die Genauigkeit der Prozentangabe.
Je Größer die Differenz desto genauer die %-Angabe...Die Prozentangabe sollte aber nicht von der Preisspanne abhängen !
-
Was bitte ist das Problem? Wo kommt da deiner Meinung nach 0% heraus?
$Rabatt1 = ($Preis / $Angebots_Preis) * 100; <=> $Rabatt1 = (4,95 / 4,20) * 100 <=> $Rabatt1 = 1,1785714285714285714285714285714 * 100 <=> $Rabatt1 = 117,85714285714285714285714285714
Das sind mathematisch gerundet 118, ganz exakt und ohne Verfälschung. Und nichts anderes gibt mir PHP bei deinem Quellcode für
$RabattZahl
am Ende auch aus. 4,95 sind 118% von 4,20.Also bitte präzisiere deine Fragestellung bzw. erkläre, wo das Problem herrührt.
Die Aussage "Das Problem besteht darin, je näher die Preise zusammen liegen, desto ungenauer wird die Prozentangabe" ist ohne nähere Erläuterung nicht nachvollziehbar.P.s. Diese Rechnung ist für deine Zwecke dennoch Käse, siehe Unix-Toms Post.
-
Preis: 10,84
Angebot: 9,21Taschenrechner: 17,698...
\1: 10
Preis: 7,00
Angebot: 5,60Taschenrechner: 25
\1: 29
Preis: 12,48
Angebot: 10,86Taschenrechner: 14,91...
\1: 17
-
Skript angeschmissen, durchrechnen lassen:
Preis: 10,84 Angebot: 9,21 Taschenrechner: 117,698... Script: 117.698...
Preis: 7,00 Angebot: 5,60 Taschenrechner: 125 Script: 125
Preis: 12,48 Angebot: 10,86 Taschenrechner: 114,917... Script: 114.917...
Meine letzte Vermutung:
Du weißt schon, dass du hier:$Preis = 4,95; $Angebots_Preis = 4,20;
keine Fließkommazahlen angibst, sondern den Kommaoperator verwendest? Sprich, $Preis ist nach der Zuweisung 4 und $Angebots_Preis auch! Entsprechend würden deine 0% zustande kommen, da beide Zahlen identisch sind.
Korrekt musst du Fließkommazahlen natürlich mit Punkt deklarieren. Ich dachte eigentlich, das wäre oben nur ein Flüchtigkeitsfehler beim Abschreiben hier im Forum gewesen, aber anscheinend liegt da bei dir wirklich der Wurm begraben.
Richtig heißt es selbstverständlich (übrigens in jeder mir bekannten Programmiersprache):
$Preis = 4.95; $Angebots_Preis = 4.20;
-
War wohl schon zu früh, das hab´ ich den Fehler nicht gesehen.
Nun läuft´s wie´s soll.
THX
==>Eisbeer<==