Thread Verfasser: rotz
Thread ID: 1710
Thread Info
Es gibt 7 Beiträge zu diesem Thema, und es wurde 2229 Mal angesehen.
 Thema drucken
Prozente
rotz
Hallo.....ich habe da mal eine frage..es ist ja möglich in PHP mit prozenten zu rechnen ich habe ein kleines Bsb. wie ich vorgegangen bin.




$variable_a = 10000;
$Variable_b = 100;
$Variable_c = 150;


Das sind die Vorgaben..das sind aber nur Beispiele.

Und in der Ausgabe mach ich es so:


echo " ".$c*$b/$a."";


Aber es erscheinen mehr Ausgaben im ,,echo,, als erscheinen soll. oder Rechne ich falsch? kann man das mit trimelink einkürzen.
Information:
PHP Version: Nicht ausgewählt •  MySQL Version: Nicht ausgewählt •  PHP-Fusion: Nicht ausgewählt
 
John Doe
Was willst du denn genau rechnen. Dein Beispiel erscheint keinen Sinn zu ergeben.
Information:
PHP Version: Nicht ausgewählt •  MySQL Version: Nicht ausgewählt •  PHP-Fusion: Nicht ausgewählt
 
Krelli
Du solltest die Rechenaufgabe noch in Klammern setzen

 echo " ".($c*$b/$a);
Information:
PHP Version: 8.2.x •  MySQL Version: Nicht ausgewählt •  PHP-Fusion: IPv9-DE-MOD
 
rotz
Habe es so im Moment:



$wert1 = ''.$data['a'].'';
$wert2 = ''.$data['b'].'';
$wert3 = 100;


und in der Ausgabe so:


".round($wert1/$wert2*$wert3 ,2)."


Aber der prozentuelle wert wird mit 0, 10 als BSp. angezeicgt. Ich würde es aber gerne so anzeigen lassen das es 1,0 anzeigen tut. Bei der Ausgabe habe ich es ja schon auf 2 gekürzt.
Information:
PHP Version: Nicht ausgewählt •  MySQL Version: Nicht ausgewählt •  PHP-Fusion: Nicht ausgewählt
 
MaZzIMo24
Auch wenn das Thema alt ist ^^
$gesamt = 1234;          // Gesamtsumme

$anteil1 = 15;           // Wert in X(%)
$anteil2 = 200;          // Wert in X(zahl)

$HUNDERT_PROZENT = 100;

$berechne_einen_prozent = ($gesamt/$HUNDERT_PROZENT);

echo " ".$anteil1."% von ".$gesamt." ist ".round($gesamt/$HUNDERT_PROZENT*$anteil1 ,2)." <br />";

echo " ".$anteil2." von ".$gesamt." sind ".round($anteil2/$berechne_einen_prozent ,2)."% <br />";

/* Ausgabe des oben geschriebenen Code ***
 15% von 1234 ist 185.1
 200 von 1234 sind 16.21%
***                                     */

Projects: MZ.CMS | MZ.Fusion | Bot.API
Programmierkenntnisse: PHP, Html(5), CSS / SCSS, jQuery, Javascript, Sql, RegExp
Information:
PHP Version: 8.2.x •  MySQL Version: 8.0 •  PHP-Fusion: IUP-FIX-PHP7
 
Krelli
@MaZzIMo24:
Ich vermute mal, dass dein Code zur Veranschaulichung so detailliert ist. Wink
Da 100Prozent immer 100 sind, kann man ja gleich fest die Zahl 100 verwenden und sich die Zuweisung als Variable in der Zeile
$HUNDERT_PROZENT = 100;
einfach sparen.
Die Zeile
$berechne_einen_prozent = ($gesamt/$HUNDERT_PROZENT);
ist auch überflüssig, hilft aber denjenigen die bei Prozentrechnung nicht so sattelfest sind und lieber Step-by-Step rechnen.
Folgender Code erfüllt die gleiche Aufgabe und spart in diesem kurzen Code-Snippet bereits 101 Zeichen, 2 Variablen-Zuweisungen und 1 extra Rechenaufgabe (Berechnung des Wertes für 1%):
$gesamt = 1234;          // Gesamtsumme

$anteil1 = 15;           // Wert in X(%)
$anteil2 = 200;          // Wert in X(zahl)

echo $anteil1."% von ".$gesamt." ist ".round(($gesamt/100*$anteil1), 2)." <br />";

echo $anteil2." von ".$gesamt." sind ".round((100/$gesamt*$anteil2), 2)."% <br />";

/* Ausgabe des oben geschriebenen Code ***
15% von 1234 ist 185.1
200 von 1234 sind 16.21%
***                                     */
Allerdings habe ich die Kettenrechnungen zusätzlich separat eingeklammert -> siehe HIER

@rotz:
Du weist mit deiner Schreibweise
$wert1 = ''.$data['a'].'';
der Variable $wert1 den Wert a aus dem Array $data zu, wobei du einen Wert vom Typ "Integer" (=numerisch) erwartest, denn du willst in Folge damit etwas berechnen. Es ist überflüssig, der Variable zu sagen, dass sich davor und dahinter kein String befindet. Einen String wollen wir eh nicht, da man mit Zahlen rechnet aber nicht mit Zeichenkombinationen ("Apfel" + "Eimer" = ?)
$wert1 = $data['a'];
wäre also vollkommen richtig, die Hochkommata und Punkte davor und dahinter sind überflüssig.

Wenn dir die 2 Nachkommastellen zu viel sind, dann ändere einfach auf round($dezimalzahl, 1) für eine Rundung auf max. 1 Stelle nach dem Komma oder ganz ohne Komma als Ganzzahl round($dezimalzahl, 0)
Information:
PHP Version: 8.2.x •  MySQL Version: Nicht ausgewählt •  PHP-Fusion: IPv9-DE-MOD
 
MaZzIMo24
Ja war zur Veranschaulichung, die Art des Codes war auch eher um zu zeigen was wie & wo passiert,
deswegen habe ich da nicht auf komprimierte Schreibweise geachtet.

LG
Projects: MZ.CMS | MZ.Fusion | Bot.API
Programmierkenntnisse: PHP, Html(5), CSS / SCSS, jQuery, Javascript, Sql, RegExp
Information:
PHP Version: 8.2.x •  MySQL Version: 8.0 •  PHP-Fusion: IUP-FIX-PHP7
 
Springe ins Forum: