Week-on-week price change
A pricing dashboard shows how far each item moved since last week, as a percentage.
- Rounded to one decimal place.
- A previous price of zero has no meaningful percentage: return 0.
- A drop is negative.
percent_change(before: int, after: int) → float
Where you start
def percent_change(before: int, after: int) -> float:
Worked examples
| Call | Result |
|---|---|
percent_change(100, 125) | 25.0 |
percent_change(200, 150) | -25.0 |
percent_change(300, 310) | 3.3 |
percent_change(100, 100) | 0.0 |
Hint
difference / before * 100, then round to one decimal by multiplying by 10, rounding, and dividing back.
Reference solution in Python
def percent_change(before: int, after: int) -> float:
if before == 0:
return 0.0
pct = (after - before) * 100 / before
return math.floor(pct * 10 + 0.5) / 10 if pct >= 0 else -(math.floor(-pct * 10 + 0.5) / 10)