0

嗨,我只是想知道是否有一种简单的方法可以让 magento 中的税只四舍五入,无论最后一个数字是多少。例如:

12.56 将保持 12.56 12.563 将向下舍入为 12.56 12.569 将向下舍入为 12.56

无论结局是什么,我都希望它向下取整. 到目前为止,这是我对英语不好的代码感到抱歉。

<?php
 const TaxRate = 20;

class ThomasDudley_Tax_Calculation extends Mage_Tax_Model_Calculation
{
    public function CalcTaxAmount ($Price, $TaxRate, $PriceIncludeTax = false, $Round = true)
    {

    $TaxRate = $TaxRate/100;

    if ($PriceIncludeTax) {
        $amount = $Price*(1-1/(1+$TaxRate));
    } else {
        $amount = $Price*$TaxRate;
    }

     if ($round) {
        return $this->roundDown($amount);
    } else {
        return $this->roundDown($amount);
    }


    function roundDown($amount)
    {

        if ($amount > 0.005) return round($amount - 0.005,2);

        } elseif {          
                 ($amount < -0.005) return round($amount + 0.005,2);
        else return 0.0;
    }
    }
} ?>
4

2 回答 2

0

巧妙地使用 floor() 怎么样?

function roundDown($amount)
{ 
   //This can be wrapped up into one line, but for the sake of showing the process.
   $tmpamt = $amount * 100; //Shift the decimal point
   $newamt = floor($tmpamt); 
   return $newamt / 100; 
}

因此,以您的 12.569 为例:

1. $tmpamt is set to 1256.9 
2. $newamt is set to 1256
3. function returns 12.56
于 2013-12-05T18:31:32.120 回答
0

我发现这里发生了什么,这是代表我的一个轻微的计算错误我在看大桶和计算错误起初我认为它只是整体答案的 20%,但它不是我的 magento 设置所以大桶是计算出每一行,所以当我计算出每一行的大桶时,它是正确的。感谢您向我展示的解决方案,这将在我的项目生命周期的后期派上用场。

于 2013-12-09T09:13:51.013 回答