Десятичные измерения демонстрируют
Вопрос
Я пытаюсь показать все цены с 4 десятичными десятичными (я знаю немного странно, но клиент потребовал это). Я переписан Mage/Core/Store, изменил точность валюты.
В бэкэнде все мои цены отображаются правильно, но на фронте я получаю цену, округленную до 2 десятичных десятиц, за которыми следует 00. Особенно уровня цена очень важна.
Поскольку у меня нет никаких знаний по ценам, я пробовал несколько учебных пособий на форуме Magento без успеха. Я также попробовал 2 расширения без удачи.
Любая помощь?
Решение 3
Я решил не делать этого и посоветовал клиенту воздерживаться от толкания его, потому что я не мог получить никаких точных результатов. Как упоминалось в комментариях:
4 Десятичная точность по своей природе неточна в Magento.
Другие советы
Я думаю, вы найдете то, что вам нужно в format
Метод внутри 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);
}
Я должен был полностью переписать свой шаблон price.phtml
В любом случае, и я использовал
<?php printf("$%.2f", $_finalPrice) ?>
так что вы могли бы сделать то же самое, но с %.4f
Кроме того, если необходимо провести сравнение по плаванию, я рекомендую:
if( abs($_price1 - $_price2) < .0001 )
вместо if($_price1 == $_price2)
Иногда гибкость типа PHP вызывает неожиданные ошибки, поэтому часто требуется явное применение желаемого типа данных: $margin=(float)1-$margin;
Я добрался до того места, где я даже не пытаюсь сложить несколько математических операций в одну строку кода.