Archiv verlassen und diese Seite im Standarddesign anzeigen : kaufmännisches Runden
Gibt es denn in Php keine Funktion, die kaufmännisch rundet?
in meinem Skript multipliziere ich den Preis mit dem Rabatt und will dann einen Wert, wie z.B. 3.555 auf 3.56 runden, aber bei round(3.555,2) kommt 3.55 raus!!! Naja geht na immer nur um einen Cent, aber trotzdem.
Kleinbreuer 04-04-2003, 16:03 Also round sollte normalerweise so runden....von 0 bis 4 ab, und ab 5 auf.....
Wenn du immer aufrunden willst, mach das mit ceil, immer abrunden soviel ich weiß mit floor......
mrhappiness 04-04-2003, 16:03 probier malecho number_format(3.555, 2);
round() ist die korrekte Funktion ... und bei mir kommt auch sauber 3.56 heraus ... !
Welche PHP-Version??
PHP Version 4.0.6
Vielleicht ist ja was an meiner Rechnung flasch:
echo number_format( $got['GK_PREIS'] * ( 1 - ($HTTP_SESSION_VARS['rabatt'] / 100)),2);
also:
echo number_format( 5.25 * 62 / 100, 2)
mrhappiness 04-04-2003, 16:13 und wo steht da was von round?
mach mal ein echo ($got['GK_PREIS'] * ( 1 - ($HTTP_SESSION_VARS['rabatt'] / 100)));
kommt 3.255 raus, das will ich eben auf 3.26 runden, aber selbst bei round(3.255,2) bekomm ich 3.25 raus
gastgast 04-04-2003, 16:21 dann lass es runden und zähle einfach 1 cent dazu.
Dann solltest Du Deinen Rechner mal neu installieren ... round() schleift schlichtweg die round()-Funktion Deiner C-Library durch ... <ironic>und ich halte es für sehr wahrscheinlich das die einen Bug hat</ironic>
:D Ja das wär ne Möglikeit, wenn mein Skript immer ein Cent zuwenig berechnen würde, aber manchmal kommt halt auch 3.451 => 4.45 raus und das stimmt dann wieder
du bist lustig ich fahr einfach mal den Webserver für ~50 Firmen runter, weil mein Skript nicht richtig rundet, ich installier grad die neuste Version von PHP, mal sehen, ob es dann funktioniert
dann addiere doch 0,5 drauf und benutze dann floor()
evtl. noch durch vorherige multiplikation und anschliessende division durch zehner-potenzen für die gewünschten nachkommastellen sorgen...
;-)
nicht die Optimallösung, aber so funktionierts, danke
|
|