Mathematics

How to Calculate Percentages

Every percentage calculation you are likely to need: in your head, on paper and in code, including the swap trick, reverse percentages and the traps that catch adults too.

Modern Age Coders Team
Modern Age Coders Team September 28, 2026
9 min read
How to calculate percentages: a 10 by 10 grid with 37 squares shaded, showing 37 out of 100 is 37%

Percentages are the part of school maths that follows you into adult life. Exam marks, discounts, interest rates, tax, pay rises, battery levels and statistics in the news are all percentages. Yet many adults reach for a calculator for 15% of something, and most people get at least one of the classic percentage questions wrong: what was the price before the discount, or why a 20% rise followed by a 20% fall does not bring you back to where you started.

This guide covers every percentage calculation you are likely to need, in the order that builds understanding: what a percentage is, how to find any percentage in your head, a shortcut that makes some awkward ones easy, percentage change, reverse percentages, and the traps that catch students and adults alike. Every calculation was checked by running it in Python, and the code is included so you can check your own answers the same way.

What a percentage actually is

The word comes from the Latin per centum, meaning "by the hundred". A percentage is a fraction with 100 on the bottom. 37% means 37 out of every 100, or 37/100, or 0.37. That is all it is.

The reason percentages are so useful is that they let you compare things of different sizes. Scoring 42 out of 50 and 68 out of 80 is hard to compare at a glance. As percentages, 84% and 85%, it is easy. Turning everything into "out of 100" puts it on the same scale.

  • Percentage to decimal: divide by 100. 37% = 0.37, 5% = 0.05, 150% = 1.5.
  • Percentage to fraction: write it over 100 and simplify. 25% = 25/100 = 1/4.
  • Fraction to percentage: divide, then multiply by 100. 3/8 = 0.375 = 37.5%.

How to find a percentage of a number

The formula is simple: percentage ÷ 100 × the number. So 17% of 240 is 17 ÷ 100 × 240 = 40.8. On a calculator, that is all you need.

In your head, there is a much friendlier method. Find two building blocks, 10% and 1%, and make everything else from them:

Building any percentage of 240 from 10% and 1%: 10% is 24, 5% is 12, 20% is 48, 1% is 2.4, 15% is 36 and 17% is 40.8
Two quick divisions give you every percentage you need.
building_blocks.py
amount = 240
ten = amount / 10          # 10%: divide by 10
one = amount / 100         # 1%: divide by 100
print("10% of 240 =", ten)
print(" 5% of 240 =", ten / 2)          # half of 10%
print("20% of 240 =", ten * 2)          # double 10%
print("15% of 240 =", ten + ten / 2)    # 10% + 5%
print(" 1% of 240 =", one)
print("17% of 240 =", ten + ten / 2 + 2 * one)   # 10% + 5% + 1% + 1%
print("check:     ", 240 * 17 / 100)
Output
10% of 240 = 24.0
 5% of 240 = 12.0
20% of 240 = 48.0
15% of 240 = 36.0
 1% of 240 = 2.4
17% of 240 = 40.8
check:      40.8
  • 10%: divide by 10. 10% of 240 is 24.
  • 5%: half of 10%. That is 12.
  • 20%, 30%, 40%: double, triple or quadruple 10%.
  • 1%: divide by 100. 1% of 240 is 2.4.
  • Anything else: add pieces together. 15% is 10% + 5%. 17% is 10% + 5% + 1% + 1%.
  • 50%, 25%, 75%: half, a quarter, three quarters. No building blocks needed.
๐Ÿ’ก

Working out a tip or tax in your head

For 15% of a bill of 480: 10% is 48, 5% is 24, so 15% is 72. For 18%: 20% is 96, take away 2% (9.6), leaving 86.4. Going over and coming back is often quicker than building up.

The swap trick that makes awkward percentages easy

Here is a genuine shortcut that most people are never taught. x% of y is always equal to y% of x. So 8% of 50, which sounds fiddly, is the same as 50% of 8, which is obviously 4.

The percentage swap trick: 8% of 50 equals 50% of 8, 4% of 75 equals 75% of 4, and 16% of 25 equals 25% of 16
Swap the numbers whenever one of them is a friendlier percentage.
swap_trick.py
examples = [(8, 50), (4, 75), (16, 25), (3, 200)]
for a, b in examples:
    print(f"{a}% of {b} = {a * b / 100:g}    and    {b}% of {a} = {b * a / 100:g}")

# does it always work? check every pair of whole numbers from 1 to 200
always = all(a * b / 100 == b * a / 100 for a in range(1, 201) for b in range(1, 201))
print("true for all 40,000 pairs:", always)
Output
8% of 50 = 4    and    50% of 8 = 4
4% of 75 = 3    and    75% of 4 = 3
16% of 25 = 4    and    25% of 16 = 4
3% of 200 = 6    and    200% of 3 = 6
true for all 40,000 pairs: True

It works because both are really the same multiplication: x × y ÷ 100. Multiplication gives the same answer in either order, so you can choose whichever version is easier to do in your head. The program checks it for all forty thousand pairs of whole numbers from 1 to 200, and it holds every time. It is not a coincidence. It is a property of multiplication.

Percentage increase and decrease

Percentage change tells you how much something has grown or shrunk, compared with where it started:

Percentage change = (new value − old value) ÷ old value × 100

A positive answer is an increase and a negative answer is a decrease. The part people get wrong is dividing by the wrong number. Always divide by the old value, the one you are comparing from. If marks go from 60 to 72, the change is 12, and 12 out of the original 60 is 20%.

Formulas for percentage change and reverse percentage with worked examples: 60 to 72 is a 20% increase, and 1800 after 25% off was originally 2400
Percentage change divides by the old value. A reverse percentage divides by what is left.

Reverse percentages: finding the original amount

This is the question that catches almost everyone. A jacket costs 1,800 in a sale that takes 25% off. What was the original price? Many people add 25% of 1,800 back on, getting 2,250. That is wrong.

The trick is to ask what the 1,800 represents. After 25% off, you are paying 75% of the original. So 1,800 is 75% of the original, and the original is 1,800 ÷ 0.75 = 2,400. Check: 25% of 2,400 is 600, and 2,400 − 600 = 1,800. It works.

change_and_reverse.py
def percent_change(old, new):
    return (new - old) / old * 100

print(f"Marks 60 -> 72:   {percent_change(60, 72):+.1f}%")
print(f"Price 2400 -> 1800: {percent_change(2400, 1800):+.1f}%")

# reverse percentage: the price AFTER 25% off is 1800. What was it before?
after, discount = 1800, 25
before = after / (1 - discount / 100)
print("original price:", before)

# the trap: up 20%, then down 20%
price = 1000
price = price * 1.20
print("after +20%:", price)
price = price * 0.80
print("after -20%:", price, "(not back to 1000)")
Output
Marks 60 -> 72:   +20.0%
Price 2400 -> 1800: -25.0%
original price: 2400.0
after +20%: 1200.0
after -20%: 960.0 (not back to 1000)

Three traps that catch adults too

Bar chart showing 1000 increased by 20% to 1200, then decreased by 20% to 960, not back to 1000
Each percentage is taken of a different starting amount.
  1. Up and down by the same percentage. The last lines of the program above show it: 1,000 up 20% is 1,200, but down 20% from 1,200 is 960. The two 20%s are of different amounts. This is why a share that falls 50% needs to rise 100% to recover.
  2. Adding percentages that are of different things. A 20% discount followed by a further 10% off is not 30% off. The second 10% is taken from the already reduced price, so the total is 28% off.
  3. Percent versus percentage points. If an interest rate rises from 4% to 5%, it has gone up by one percentage point, but by 25% of its old value. News headlines mix these up constantly, sometimes on purpose.

Working out exam marks as a percentage

For students, the most common percentage calculation is marks. Divide the marks scored by the maximum, then multiply by 100. The trap is working out an overall percentage when subjects are marked out of different totals:

marks.py
scores = {"Maths": (88, 100), "Science": (71, 80), "English": (46, 60), "Computer Science": (97, 100)}
total, out_of = 0, 0
for subject, (got, maximum) in scores.items():
    total += got
    out_of += maximum
    print(f"{subject:<17} {got:>3}/{maximum:<3} = {got / maximum * 100:5.1f}%")
print(f"{'Overall':<17} {total:>3}/{out_of:<3} = {total / out_of * 100:5.1f}%")
average_of_percents = sum(g / m * 100 for g, m in scores.values()) / len(scores)
print(f"Average of the four percentages = {average_of_percents:.1f}%  (not the same thing)")
Output
Maths              88/100 =  88.0%
Science            71/80  =  88.8%
English            46/60  =  76.7%
Computer Science   97/100 =  97.0%
Overall           302/340 =  88.8%
Average of the four percentages = 87.6%  (not the same thing)

The overall percentage adds up all the marks and divides by all the maximums. Averaging the four subject percentages gives a slightly different number, because it treats a paper out of 60 as if it counted the same as one out of 100. Which one is "right" depends on how your school or board calculates it, so always check the rule before comparing results.

How to practise percentages

  • Shopping: estimate every discount before the till does. 30% off 1,450? 10% is 145, so 30% is 435.
  • Restaurant bills: work out 10%, 15% and 20% of the total at the table.
  • News: when a headline quotes a percentage, ask "of what?" and whether it means percent or percentage points.
  • Code: write a tiny program, like the ones above, that checks your mental answers. It is also a gentle introduction to programming. Our guide to mental maths tricks has more number-sense techniques.

The same habit works for any calculation: round, estimate, then compare. Our guide to estimation in maths covers the method, Fermi problems and the quick check that catches most calculator mistakes.

Find 10%, find 1%, and you can find anything. Then ask: a percentage of what?

How we teach it

Our live online maths classes start from a question worth answering, such as whether a sale price is really a bargain, and only then reach the formula, in line with the approach on our how we teach page. For students who enjoy it, maths and code support each other, which is the idea behind learning coding and maths together. Classes are one to one or in small groups of 5 to 10, for ages 6 to 67.

Frequently asked questions

Multiply the number by the percentage and divide by 100. For example, 17% of 240 is 17 x 240 / 100 = 40.8. In your head, find 10% by dividing by 10 and 1% by dividing by 100, then add the pieces you need.

Divide the part by the whole and multiply by 100. For example, 42 out of 50 is 42 / 50 x 100 = 84%.

Percentage increase = (new value - old value) / old value x 100. Always divide by the original value. A rise from 60 to 72 is 12 / 60 x 100 = 20%.

Divide the sale price by the fraction of the original you actually paid. After 25% off you pay 75%, so divide by 0.75. A sale price of 1,800 means an original price of 1,800 / 0.75 = 2,400.

Because the two percentages are taken of different amounts. 20% of 1,000 is 200, taking you to 1,200. 20% of 1,200 is 240, taking you down to 960. You end 4% below where you started.

Yes, always. Both equal x times y divided by 100, and multiplication gives the same answer in either order. So 8% of 50 is the same as 50% of 8, which is 4.

Percentage points measure the simple difference between two percentages, while percent measures the relative change. A rate rising from 4% to 5% has risen by 1 percentage point, which is a 25% increase in the rate itself.

Modern Age Coders Team

About Modern Age Coders Team

Expert educators making coding and maths clear for ages 6 to 67.

Keep exploring Modern Age Coders

More from the blog

Free resources

From the blog

Start here

Ask Misti AI
Chat with us
Enroll Watch Class Priority Demo Enrol Book a Demo Watch Class WhatsApp Book demo today