Magento价格格式没有舍入数字

时间:2013-03-14 12:42:01

标签: magento

我有以下价格

$ price = 7.358;

将格式化为小数后的两位数

后,我想要以下结果

$ result = 7.35但不是以下

$ result = 7.36;

我怎样才能在Magento中这样做。

谢谢

2 个答案:

答案 0 :(得分:1)

您必须重写Mage_Directory_Model_Currency。这个类有一个format()方法。

原始版本:

public function format($price, $options=array(), $includeContainer = true, $addBrackets = false)
{
    return $this->formatPrecision($price, 2, $options, $includeContainer, $addBrackets);
}

如果你跟着调用formatPrecision,你会看到舍入归结为Zend_Currency除了精度之外你对它没有任何影响。因此,在发生这一切之前,您必须在格式化方法中向下舍入。

更新版本:

public function format($price, $options=array(), $includeContainer = true, $addBrackets = false)
{
    $price = bcdiv($price, 1, 2);
    return $this->formatPrecision($price, 2, $options, $includeContainer, $addBrackets);
}

请注意,您永远不应编辑核心文件。进行此更改的快速而肮脏的方法是将文件从app/code/core/Mage/Directory/Model/Currency.php复制到app/code/local/Mage/Directory/Model/Currency.php并修改此副本。但推荐的“Magento方式”是重写课程。如果您不知道如何做,请查看“Magento模型重写”。

答案 1 :(得分:0)

根据您希望这种情况发生的位置,您可以修改显示模板,而不是使用核心代码进行修改。即,如果在目录/产品视图页面上,您可以将catalog / product / price.phtml移动到主题文件夹中并创建格式化功能。