2011-01-05 61 views
-2

我有2个变量:$ vatRate和$ priceExVat。我想创建另一个名为$ endPrice的变量,其中增加了VAT。我对如何做到这一点不知道,和我在PHP中的begginner,所以我想有一个代码示例;)加入增值税到价格

$priceExVat == $_POST['priceExVat']; 
$vatRate = $_POST['vatRate']; 
rtrim($vatRate ,'%'); 
$endPrice = ($vatRate * $priceExVat) + $priceExVat; 
echo $endPrice; 

编辑:以上是不工作的代码返回一个0

+1

如何为$ vatRate指定?这是作业吗? – Gordon 2011-01-05 18:24:31

+0

速率指定为百分比。 – 2011-01-05 18:25:15

+0

你也是:(它已经是20% – RobertPitt 2011-01-05 18:25:52

回答

4
$endPrice = ($vatRate * $priceExVat) + $priceExVat; 

$endPrice = (1+$vatRate * $priceExVat); 

$vatRate = 0.07; 
$priceExVat = 100.00; 

由于越来越-3

所有的答案是某种错的,如果值是字符串20%

$endPrice = ((int)$vatRate/100)*$priceExVat)+$priceExVat; 
+0

如果VatRate以百分比形式定义,则不适用。 – 2011-01-05 18:26:12

+1

@James:OP从来没有真正解释过,所以任何人都在猜测。 – FrustratedWithFormsDesigner 2011-01-05 18:27:30

+1

**对于downvoter,这个答案出现在OP说的是百分比**之前,拿回来 – ajreal 2011-01-05 18:27:39

-1
$vatRate = "20%"; 
$priceExVat = 100;  
$endPrice = (intval($vatRate)/100) * $priceExVat + $priceExVat; 
+0

高度unlikey,变量VatRate实际上是增值税金额。 – 2011-01-05 18:26:53

+0

你不知道,因为它没有在问题中指定。我认为它是这样的,直到另有指定。该变量称为速率,而不是百分比。 – 2011-01-05 18:29:54

+0

什么是$ vatRate里面只有值“20%” – DogPooOnYourShoe 2011-01-05 18:33:22

1

假设$ vatRate被指定为百分比。

$endPrice = $priceExVat * $vatRate/100 
6

打破它在全:

<?php 
    $vatRate = 20;  // This must be the percentage VAT rate. e.g.: 20, 17.5. 
    $priceExVat = 10; 
    $vatComponent = ($priceExVat/100) * $vatRate; 
    $endPrice = $priceExVat + $vatComponent; 

    echo 'The resultant price is &pound;' . number_format($endPrice, 2); 
?> 

顺便说一句,你可能需要在日后的增值税部分,所以如果你在任何非平凡的方式,使用该你真的应该存储基准(即:增值税前)价格,然后应用增值税税率并相应地进行调整以达到产出目的。

此外,您可能还需要允许多个增值税率,因为不是所有的商品都在英国的20%征税。 (有些是免税的,有些是在 “减少” 5%的税率征税,等等)

+1

假设VatRate是一个百分比,是的。 – 2011-01-05 18:27:56

+0

@詹姆斯沃尔福德 - 好点。 (如果它是一个正确的函数/方法,我已经在phpdoc参数中说过了。):-) – 2011-01-05 18:30:04

+0

$ vatRate中的内容只有值“20%” – DogPooOnYourShoe 2011-01-05 18:34:17

2

这是怎么了应该做的事:

function vat($ex_vat,$vat = 20.0) 
{ 
    return round($ex_vat+ ((double)$vat*($ex_vat/100)),2); 
} 

例子:

$withVat = vat(80,20); //£0.80 > £0.96 
+0

关于四舍五入的好处,但如果你的代码实际上返回£0.80>£1.00,我不得不要求退款...... ;-) – 2011-01-05 18:35:57

+0

哈哈,在这里你要这么'0.04英镑'退款。 – RobertPitt 2011-01-05 18:37:49