Neuigkeiten:

still alive...

Hauptmenü

Rechenoperation mit Array

Begonnen von haraldos, 02. Mai 2005, 11:54:55

Vorheriges Thema - Nächstes Thema

haraldos

Nach meiner erfolgreichen Datenbankbefragung http://www.powie.de/pforum/showthread.php?id=19844\" rel=\"external nofollow\">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[/quote]
Ist der grundsätzliche Gedanke falsch oder steckt nur der Teufel im Detail?
http://de.profile.xfire.com/haraldos\" rel=\"external nofollow\">http://de.miniprofile.xfire.com/bg/co/type/2/haraldos.png\" alt=\"haraldos.png\">

Powie

wenn da ein int oder double rauskommt, dann spar dir einfach das stripslashes....

haraldos

Es handelt sich um eine Zahl, ein Preis um genau zu sein.
Wie kann ich den Preis auf die zweite Nachkommestelle auf- bzw abrunden lassen?
http://de.profile.xfire.com/haraldos\" rel=\"external nofollow\">http://de.miniprofile.xfire.com/bg/co/type/2/haraldos.png\" alt=\"haraldos.png\">

Powie

es gibt eine Format Funktion mit der du das erreichen kannst.
-> number_format($preis,2,\',\',\'.\');

mahe

und runden mit round(), ceil(), floor()
Was jetzt was is (auf/ab/normal) muss ich selber immer guggn /uploads/emoticons/icon_e_biggrin.gif.1a84f5257b36e14b36d04985314f877f.gif\" alt=\":-D\" />

http://blog.mahe.at\" rel=\"external nofollow\">http://blog.mahe.at/wp-content/uploads/2007/06/88x31_1.jpg\" alt=\"88x31_1.jpg\">


Ja, diese Signatur dient zur Werbung!


Und dass ich meine Posts wiederfinde ...


haraldos

*freufreufreu*  /uploads/emoticons/icon_e_biggrin.gif.1a84f5257b36e14b36d04985314f877f.gif\" alt=\":-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?
http://de.profile.xfire.com/haraldos\" rel=\"external nofollow\">http://de.miniprofile.xfire.com/bg/co/type/2/haraldos.png\" alt=\"haraldos.png\">

Powie

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.

haraldos

Hmmpf, das war nicht der Denkanstoß den ich mir erhofft habe... /uploads/emoticons/icon_e_wink.gif.3167d127940f44558fbf1ccd9b6d60a9.gif\" alt=\";-)\" />
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...
http://de.profile.xfire.com/haraldos\" rel=\"external nofollow\">http://de.miniprofile.xfire.com/bg/co/type/2/haraldos.png\" alt=\"haraldos.png\">

Powie

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

haraldos

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.  /uploads/emoticons/icon_e_smile.gif.f7ec63a2b1c3d90a9415e40455642502.gif\" alt=\":-)\" />
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...
http://de.profile.xfire.com/haraldos\" rel=\"external nofollow\">http://de.miniprofile.xfire.com/bg/co/type/2/haraldos.png\" alt=\"haraldos.png\">

...

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!

mahe


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!
[/quote]jaja,mit Kanonen auf Spatzen /uploads/emoticons/icon_e_biggrin.gif.1a84f5257b36e14b36d04985314f877f.gif\" alt=\":-D\" />
www.php.net/round /uploads/emoticons/icon_e_wink.gif.3167d127940f44558fbf1ccd9b6d60a9.gif\" alt=\";-)\" />

http://blog.mahe.at\" rel=\"external nofollow\">http://blog.mahe.at/wp-content/uploads/2007/06/88x31_1.jpg\" alt=\"88x31_1.jpg\">


Ja, diese Signatur dient zur Werbung!


Und dass ich meine Posts wiederfinde ...


haraldos

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.
http://de.profile.xfire.com/haraldos\" rel=\"external nofollow\">http://de.miniprofile.xfire.com/bg/co/type/2/haraldos.png\" alt=\"haraldos.png\">

all your base are belong to us / Discord