A 40 percent off sale followed by an additional 20 percent off is not 60 percent off. It is 52 percent off. Stacked discounts multiply they do not add. This basic math error costs consumers and confuses retail employees daily.
Stacked discounts
"40% off plus an additional 20% off" means:
Original: $100
After 40% off: $100 * 0.60 = $60
After additional 20% off: $60 * 0.80 = $48
Total discount: $52 off = 52% off
NOT 60% off
The formula for stacked discounts:
function stackedDiscount(price, ...discounts) {
let final = price;
for (const d of discounts) {
final *= (1 - d / 100);
}
return {
finalPrice: final,
totalSaved: price - final,
effectiveDiscount: ((price - final) / price * 100)
};
}
stackedDiscount(100, 40, 20);
// { finalPrice: 48, totalSaved: 52, effectiveDiscount: 52 }
The "percentage off" vs. "dollars off" decision
Retailers choose between "30% off" and "$15 off" strategically. Research shows consumers prefer whichever sounds bigger:
- Under $100: percentage sounds bigger ("30% off" vs. "$15 off")
- Over $100: dollar amount sounds bigger ("$50 off" vs. "20% off")
This is called the "Rule of 100" in pricing psychology. Both represent the same savings, but perception differs.
Calculating the original price
If you know the sale price and the discount percentage, the original price is:
Original = Sale price / (1 - Discount%)
$48 at 20% off: Original = $48 / 0.80 = $60
Common mistake: adding the discount percentage to the sale price.
WRONG: $48 + 20% of $48 = $48 + $9.60 = $57.60
RIGHT: $48 / 0.80 = $60
For calculating discounts, stacked sales, and reverse-engineering original prices, I built a calculator at zovo.one/free-tools/percent-off-calculator. It handles single discounts, stacked discounts, and calculates the effective total discount.
I'm Michael Lip. I build free developer tools at zovo.one. 500+ tools, all private, all free.
Top comments (0)