Tierprice -Dezimalstellen Anzeige
Frage
Ich versuche, alle Preise mit 4 Dezimalstellen anzuzeigen (ich weiß ein bisschen seltsam, aber der Kunde hat dies verlangt). Ich habe überschriebene Mage/Core/Store überschrieben, die Genauigkeit von Currency.php in der Zend Lib und angepasst mage_directory_model_currency angepasst.
Im Backend werden alle meine Preise korrekt angezeigt, aber im Frontend erhalte ich einen auf 2 Dezimalstellen abgerundeten Preis, gefolgt von 00. Besonders der Tierpreis ist sehr entscheidend.
Da ich keine Kenntnisse in der Preisgestaltung habe, habe ich einige Tutorials im Magento Forum ohne Erfolg ausprobiert. Ich habe auch 2 Erweiterungen ohne Glück ausprobiert.
Irgendeine Hilfe?
Lösung 3
Ich beschloss, es nicht zu tun, und riet dem Kunden, es nicht zu schieben, weil ich keine genauen Ergebnisse erzielen konnte. Wie in den Kommentaren erwähnt:
4 Dezimalpräzision ist in Magento von Natur aus ungenau.
Andere Tipps
Ich denke, Sie werden finden, was Sie in der brauchen format
Methode im Inneren app/code/core/Mage/Directory/Model/Currency.php
.
/**
* Format price to currency format
*
* @param double $price
* @param bool $includeContainer
* @return string
*/
public function format($price, $options=array(), $includeContainer = true, $addBrackets = false)
{
return $this->formatPrecision($price, 2, $options, $includeContainer, $addBrackets);
}
Ich musste die meiner Vorlage komplett umschreiben price.phtml
Wie auch immer, und ich habe benutzt
<?php printf("$%.2f", $_finalPrice) ?>
Sie könnten also das Gleiche tun, aber mit %.4f
Wenn Sie Vergleiche für Floats durchführen müssen, empfehle ich auch:
if( abs($_price1 - $_price2) < .0001 )
Anstatt von if($_price1 == $_price2)
Manchmal induziert die Flexibilität von PHP unerwartete Fehler, sodass häufig ein explizites Casting Ihres gewünschten Datentyps benötigt wird: $margin=(float)1-$margin;
Ich bin dorthin gekommen, wo ich nicht einmal versuche, mehrere Mathematikoperationen in eine Codezeile zu stapeln.