Hallo,
Unten habe ich ein kleines PHP-Programm gepostet:
Es wird ein Prozentwert ausgerechnet, der dann mit floor() von evtl. vorhandenen Cent-Nachkommastellen befreit werden soll.
Das Ergebnis von floor() ist aber falsch!
Das liegt aber nicht am floor() selbst, sondern daran, dass bereits der Eingangs-Wert offensichtlich nicht "wirklich" 115 ist. Das kann man ja auch an der Ausgabe des Werts als String sehen.
Das PHP-Programm:
Liefert diese Ausgabe:
25 Prozent von 4.6 Euro = 1.15 Euro
1.15 Euro sind 115 Cent.
Aber auch 114 Cent.
115 Cent sind nach floor() = 114 Cent
Kann mir jemand von Euch einen Tipp geben, wie man solche Rundungsprobleme aus dem Weg bekommt?
Vielen Dank,
Frank
Unten habe ich ein kleines PHP-Programm gepostet:
Es wird ein Prozentwert ausgerechnet, der dann mit floor() von evtl. vorhandenen Cent-Nachkommastellen befreit werden soll.
Das Ergebnis von floor() ist aber falsch!
Das liegt aber nicht am floor() selbst, sondern daran, dass bereits der Eingangs-Wert offensichtlich nicht "wirklich" 115 ist. Das kann man ja auch an der Ausgabe des Werts als String sehen.
Das PHP-Programm:
PHP:
$GesamtPreisInEuro = 4.6;
$ProzentSatz = 25;
$ProzentWertInEuro = $GesamtPreisInEuro * $ProzentSatz / 100;
echo "$ProzentSatz Prozent von $GesamtPreisInEuro Euro = $ProzentWertInEuro Euro<br>";
$ProzentWertInCents = $ProzentWertInEuro * 100;
echo "$ProzentWertInEuro Euro sind $ProzentWertInCents Cent.<br>";
$ProzentWertInCentsAlsString = sprintf("%d", $ProzentWertInCents);
echo "Aber auch $ProzentWertInCentsAlsString Cent.<br>";
$GerundeterWertInCent = floor($ProzentWertInCents);
echo "$ProzentWertInCents Cent sind nach floor() = $GerundeterWertInCent Cent<br>";
Liefert diese Ausgabe:
25 Prozent von 4.6 Euro = 1.15 Euro
1.15 Euro sind 115 Cent.
Aber auch 114 Cent.
115 Cent sind nach floor() = 114 Cent
Kann mir jemand von Euch einen Tipp geben, wie man solche Rundungsprobleme aus dem Weg bekommt?
Vielen Dank,
Frank