Gunnar Bittersmann: % zwischen zwei Beträgen errechnen

Beitrag lesen

@@Melvin Cowznofski

  // Gegeben sind 2 Preise, von denen jeder der größere sein könnte:

  $preis_1 = floatval(25);
  $preis_2 = floatval(14.95);

  // Die 2 Preise kommen in ein Array und werden nach Größe sortiert.
  // Der erste Wert des Arrays ist dann der niedrigere Preis:

  $preise = array($preis_1, $preis_2);

Wieso packst du die Werte erst in Variablen und nicht gleich in ein Array?

  sort($preise);

Die Sache mit dem Array und dem Sortieren kannst du dir sparen, indem du abs($preis_1 - $preis_2) / min($preis_1, $preis_2) berechnest.

  // Der erste, kleinere Preis ist 100%.
  // Berechnet wird nun, wieviel % somit der größere Preis ist.
  // Zieht man davon 100 ab, weiß man, um wieviel % der 2. Preis höher ist.
  // Das Ergebnis wird dann noch auf die Einserstelle gerundet:

  $prozent = round(($preise[1]*100/$preise[0])-100);

round(($preise[1] / $preise[0] - 1) * 100) sieht einfacher und verständlicher aus.

  // Ergebnis:

  echo $preise[1].'€ ist um '.$prozent.'% teurer als '.$preise[0].'€.';

echo.. ist auch ein recht sicheres Indiz, dass man etwas falsch™ macht.

Mit Platzhaltern: printf('%2$01.2f€ ist um %3$d%% teurer als %1$01.2f€.', $preise[0], $preise[1], $prozent)

oder bei Ausgabe in HTML: <?= $preise[1] ?>€ ist um <?= $prozent ?>% teurer als <?= $preise[0] ?>€.

Und zwischen der Zahl und dem €-Zeichen sollte eigentlich Leerraum sein, vorzugszweise U+202F NARROW NO-BREAK SPACE; in HTML also &#x202F;

LLAP 🖖

--
Ist diese Antwort anstößig? Dann könnte sie nützlich sein.