Jump to content

Rechenoperation mit Array


Recommended Posts

Nach meiner erfolgreichen Datenbankbefragung http://www.powie.de/pforum/showthread.php?id=19844 muss ich einen numerischen Wert vor der Ausgabe berechnen. Ad Hoc habe ich das so versucht:

 

echo "".stripslashes($row[p1]*1.1252)."\n\n";

 

führt aber leider nur zu folgendem Fehler:


Warning: Wrong parameter count for stripslashes() in /htdocs/pricelist2.php on line 18


Ist der grundsätzliche Gedanke falsch oder steckt nur der Teufel im Detail?

Link to post
Share on other sites

*freufreufreu* :-D

Rechnen und Ausgabe formatieren klappt prima, Stand der Dinge so far:

 

echo "".number_format($row[p1]*1.1252, 2, ",", ".")."\n\n";



Im Grunde mache ich hier nix anderes, als auf einen Nettopreis die Mehrwertsteuer aufzurechnen und Skonto wieder abzuziehen. Dummerweise entstehen ab und an Rundungsfehler, als statt 12€ beispielsweise 11,99€ oder 12,01€. In beiden Fällen soll der jetzt noch wieder auf die 12€ runden. Eine pauschale Rundung nach oben oder unten scheint mir in diesem Fall also nicht weiter zu helfen.

Der Rundungsfehler kann maximal 1Cent betragen, aber in beide Richtungen eben. Und: die Rundung darf sich nur auf den letzten Cent beziehen, da auch Bruttopreise a la 7,90€ dabei sein können.


Denkanstöße?

Link to post
Share on other sites

Willkommen in der Welt der Finanzmathematik. Diese Cent-Fehler sind immer und überall vorhanden und passieren einfach durch die Umrechnungen von Netto/Brutto/Skonto/Rabatten an allen Ecken und Enden.

Ich denke aber dafür wird es keine generelle Lösung geben.. mit solchen Beträgen muss man einfach leben.

Link to post
Share on other sites

Hmmpf, das war nicht der Denkanstoß den ich mir erhofft habe... ;-)


Aber komischerweise kann unser Onlineshop dass ja auch, der bezieht die Daten, und somit auch die Nettopreise, aus exakt der gleichen Datenbank aus der ich meine Preisliste generieren will.

Habe auch schon mal versucht mir diese Funktion zu extrahieren, aber irgendwie werde ich aus dem Code den die Shopmacher da gebastelt haben überhaupt nicht schlau...

Link to post
Share on other sites

beantworte dir/mir/uns einfach diese einfach Frage:


Wie stellst du fest wann du einen Rundungsfehler in deiner Rechnung hast und wann nicht !?


Ich würde mich selbst da für eine Lösung interessieren

Link to post
Share on other sites

In diesem speziellen Fall ganz einfach: da unsere Preise immer eine Null in der zweiten Nachkommastelle haben, weiß ich sofort dass es sich um einen Rundungsfehler handelt, wenn dort eine eins oder eine neun steht. :-)


Dabei kommt mir spontan folgende Idee: wenn ich eine Eins einfach um einen Cent abrunden und eine Neun um einen Cent aufrunden lassen würde, wäre ich für meinen Bedarf fein raus...

Link to post
Share on other sites
Original von Stibie

Da werden dir am besten die Regulären Ausdrücke helfen, kontrollier einfach die zweite Zahl nach dem Komma und guck, ob die nicht null ist!

jaja,mit Kanonen auf Spatzen :-D


www.php.net/round ;-)

Link to post
Share on other sites

So, jetzt isses vollbracht!

Habe das Problem relativ "elegant" umschifft:

 

echo "".number_format($row[p1]*1.1252, 1, ",", ".")."0\n\n";



Ich kürze einfach auf die erste Nachkommastelle und hänge die letzte Null statisch dahinter. Vielleicht nicht sehr inovativ, aber für meine Zwecke vollkommen ausreichend.


Das ganze funktioniert natürlich nur, wenn man mit Preisen arbeitet, die immer auf einer Null enden.

Link to post
Share on other sites
Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...