我有一家商店,客户在其所在国家/地区按税率输入产品价格。当我保存它我需要删除税,只保留基数。
当我在某些情况下计算来自同一国家/地区的客户的退税时,总价格会有0.01,0.03与原价不同。
我尝试用2到4位数进行计算,但它并不适用于所有情况。
例:税价= 157,税率为7.7%=> base = 145.78,税额11.22
当我计算以前的价格基础的税时,我得到这个:
基数:145.78,税率为7.7%=> 11.23 =价格是157.01
我使用的Php代码:
$baseprice = round($fullprice / (1+($taxperc/100)),2);
在前端:
$tax = round($baseprice * ( $taxperc / 100 ),2);
$total = $tax + $baseprice;
有人建议如何解决此问题吗?
谢谢!
更新:经过一些研究后我发现一个解决方案是使用PHP_ROUND_HALF_EVEN
Update2:第一个解决方案无效。 1-9工作正常,10 -tax + tax = 10.01
答案 0 :(得分:0)
今天的解决方案是使用全数字(基本价格,税金和总数)在后面工作,并且仅在显示供用户进行舍入时使用。 :)
答案 1 :(得分:-1)
似乎(不是100%肯定,我需要测试更多)解决方案是使用银行家舍入PHP_ROUND_HALF_EVEN
$baseprice = round($fullprice / (1+($taxperc/100)),2 , PHP_ROUND_HALF_EVEN);
$tax = round($baseprice * ( $taxperc / 100 ),2 , PHP_ROUND_HALF_EVEN);
$total = $tax + $baseprice;