0

我有以下价格

$价格 = 7.358;

我想要将其格式化为小数点后两位数后的以下结果

$result = 7.35 但不是以下

$结果 = 7.36;

我怎样才能在 Magento 中做到这一点。

谢谢

4

2 回答 2

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,除了精度之外,您对其没有任何影响。因此,在所有这些发生之前,您必须在 format 方法中四舍五入。

更新后的版本:

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.phpapp/code/local/Mage/Directory/Model/Currency.php并修改此副本。但推荐的“Magento 方式”是重写类。如果您不知道该怎么做,请查看“Magento 模型重写”。

于 2013-03-14T13:31:56.590 回答
0

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

于 2017-08-10T11:39:56.690 回答