# Reversing a Discount Percentage

May 11, 2016 at 12:05 pm

Removing a discount is not as simple as adding the discounted amount back in if the logic for applying the discount applies it on the new number. If a post-discount operation can be performed then the math is much easier (add `x * discount` to the discounted price.

A discount applied to the original number is slightly tricker. For the math below, `discount` is a percentage and `cost` will be a dollar figure.

```discount = 10%
cost = \$100
```

A discounted cost can be calculated `discount` to `cost`:

```discounted_cost = cost - (cost * discount) => \$90
```

Simply applying an addition of `discount` does not work, it results in a new cost that’s slightly less than the expected (original) cost:

```new_cost = cost + (cost * discount) => \$110
discounted_cost = new_cost - (new_cost * discount) => \$99
```

A formula with one unknown `increase` used to balance `discount` against the original `cost` can be written as:

```(cost + cost * increase) - ((cost + cost * increase) * discount) = cost
```

Simplifying that formula:

```(x + (x * z)) - ((x + x * z) * y) = x
z => y/(-y + 1)
```

Now a formula `increase` given `discount` can be written:

```increase = discount / (-discount + 1) => 0.1111
```

And a formula for `new_cost` given only `discount`:

```new_cost = cost + cost * (discount / (-discount + 1)) => \$111.1111
```

Calculating the new total and proving it balances with the original cost:

```new_total = new_cost - (new_cost * discount) => \$100
```

A simple function for Python could be written as follows:

```def remove_discount(cost, discount):
return cost + cost * (discount / (-1 * discount + 1))
```
Can’t find what you’re looking for? Try hitting the home page or viewing all archives.