Hallo Ihr Lieben,
Ich versuche derzeit in einem Module dafür zu Sorgen das Auswahllisten Aufpreise unabhängig von der Anzahl der Artikel (also nur einmal) aufgerechnet werden. Das Modul an sich funktioniert ja einwandfrei, problem ist nur das ich extrem hässliche Rundungsfehler bekomme. Ein Beispiel (folgendes ist ein Modul auf oxarticles):
public function getBasketPrice( $dAmount, $aSelList, $oBasket ){
$params = $this->getPersParams();
if($params["ismvpath"] == 1){
$selList = $this->_getSelList($aSelList);
$pPrice = parent::getBasketPrice ( $dAmount, $selList, $oBasket );
$selPrice = $this->_getSelectListPrice($aSelList);
if($dAmount > 0){
$pPrice->add( $selPrice / $dAmount );
}
return $pPrice;
}else{
return parent::getBasketPrice ( $dAmount, $aSelList, $oBasket );
}
}
Was ich vorhabe ist eine abgeänderte Berechnung des Preises im Warenkorb, alle Auswahllisten die einen absoluten Aufschlag haben sollen einmalig aufgerechnet werden - die Prozentbasierten wie gehabt. Wie gesagt alles kein Problem, nur leider sorgt folgende Zeile für Probleme:
$pPrice->add( $selPrice / $dAmount );
Mir ist auch klar warum, schließlich könnten bei dieser Umrechnung ja Zahlen mit langen oder unendlichen Nachkomma stellen rauskommen. Die Frage ist nun wie ich diesen Preis nun am besten berechnet bekomme ohne diese Rundungsfehler.
Kleines Rechenbeispiel:
Grundpreis für 249 Stück = 99,60 Euro
-> dazu kommt eine Auswahl mit Preis von 11,00 Euro
-> daraus folgt ein Einzelpreis der Auswahl von 11,00 / 249 Euro = 0,044176706827309
-> Rechne ich nun diesen Preis auf den Einzelpreis auf entsteht (verständlicherweise) ein Rundungsfehler und ich bekomme einen Endpreis von 109,56 €, erwartet hätte ich einen Endpreis von 99,60 + 11,00 Euro = 110,60 Euro.