online 1
gast (50)

/ Forum / Skripte(PHP,ASP,Perl...)

Skripte(PHP,ASP,Perl...)Skripte(PHP,ASP,Perl...)

Fragevon Uesch vom 09.05.2019, 17:18 Options

Einfache Rechnung -> Falsches Ergebnis

Hallo allerseits,

ich habe eine Frage. Ich habe gestern mal eben einen kleinen Netto-Brutto, Brutto-Netto-Rechner gebaut. Dazu habe ich folgenden Code:

if ($rechne AND !empty($netto) AND empty($brutto)) {
$ergn = $netto*1.19;
$erg = (double)sprintf ('%.2f',$ergn);
echo "$netto Euro Netto sind $erg Euro Brutto!";
}
if ($rechne AND empty($netto) AND !empty($brutto)) {
$ergen = $brutto/1.19;
$erge = (double)sprintf ('%.2f',$ergen);
echo "$brutto Euro Brutto sind $erge Euro Netto!";
}


So, hab ich gleich ausprobiert, funzt auch prima. Wenn ich bei Netto 100 eingebe, gibt er mir 119 Brutto als Antwort. Stimmt also. Nun wollte ich eine etwas schwerere Rechnung ausprobieren und habe dazu bei Netto 248,74 Euro eingegeben. Daraufhin sagt er, dass das 295.12 Euro sind. Das ist aber falsch, ich habe mit dem Taschenrechner nachgerechnet und habe 296,0006 Euro herausbekommen.
Daraufhin dachte ich, dass es möglicherweise an dem Runden liegt und habe die Spalte (double)sprintf ('%.2f',$ergn) gelöscht. Doch es kommt immernoch genau das gleiche falsche Ergebnis heraus.
Woran liegt das? Warum rechnet PHP falsch?

Gruß,

Üsch


Antwort schreiben

Antwort 1 von Flintstone vom 09.05.2019, 18:27 Options

Hallo,

hättest du das 'falsche' Ergebnis mal zurückgerechnet, dann wäre dir aufgefallen, dass die Dezimalstellen des Ausgangwertes ignoriert werden.

295,12 / 1,19 = 248,00

Gruß
Fred

Antwort 2 von Uesch vom 10.05.2019, 16:10 Options

Und woran liegt das, dass er die nicht mitrechnet?

Antwort 3 von JBJBJBJBJBJBJBJ vom 10.05.2019, 16:20 Options

Hallo,

woran das liegt kann ich dir leider auch nicht sagen.
Ich hätte nur eine Mögliche Lösung für dich.
Bei einer Eingabe von einer Kommazahl multiplizierst du einfach mal 100. Bei der Rückgabe dividierst du dann wieder durch 100.

Gruß

Antwort 4 von TombDevil vom 10.05.2019, 17:17 Options

Hallo Üsch,

das liegt am Komma bei 248,74 - hier muss ein Dezimalpunkt stehen genau wie bei Deinen 1.19. Ansonsten schneidet PHP einfach beim Rechnen die "Nachkommazahlen" ab.

siehe Beispiel:

$na = array(100, '248,74', 248.74);
foreach($na as $netto)
{
	$ergn = $netto*1.19;
	echo($netto.'*1.19='.$ergn.'<BR>');
}

liefert

100*1.19=119
248,74*1.19=295.12
248.74*1.19=296.0006


Ausser Du hast Dein setlocale verändert auf "german", aber dann stimmt der Dezimalpunkt nicht.

Ciao
TombDevil

Ähnliche Themen

Ich bekomme keine rechnung unter www,t-com.de/recnung
Einkaufen  29.07.2007 - 144 Hits - 4 Antworten

www.t-com.de/rechnung
Riet  12.12.2007 - 307 Hits - 1 Antwort

Excel: Buchstaben im Ergebnis?
ManuStaufi  14.01.2008 - 42 Hits - 19 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Thu Jan 8 21:07:44 2026