Percentage Calculator
All four percentage questions on one page — fill in the blanks and every answer updates live, with exact integer math and one honest rounding rule.
Nothing leaves your browser. All four answers are exact integer arithmetic on your own device — no network requests, no account, works offline. Copy buttons copy the plain number (e.g. -33.33), ready for a spreadsheet.
The four percentage questions, and which one you're asking
Almost every everyday percentage problem is one of the four sentences above. A scales a number by a rate: 15% of 200 is 15 × 200 ÷ 100 = 30 — a tip, a tax, a share. B runs the same relationship backwards to find the rate: 45 out of 60 is 45 ÷ 60 × 100 = 75% — a test score, a completion rate. C compares two values over time: from 80 to 100 is (100 − 80) ÷ 80 × 100 = +25% — a price rise, a traffic drop. D applies a change to a number: 80 increased by 7.5% is 80 × 1.075 = 86 — a raise, a discount. The trap is picking the wrong sentence: “the price went from 150 to 100” is question C (−33.33%), not question B (100 is 66.67% of 150) — related, but different numbers.
Why +50% then −50% doesn't cancel
Percentages are always relative to the number they act on, so a gain and a loss of the same percent never round-trip. Increase 100 by 50% and you're at 150; now decrease 150 by 50% and you're at 75, not 100 — the −50% acted on the bigger number. The gap widens with the rate: +80% then −80% turns 100 into 36. To actually undo a +50% move you need mode C: the change from 150 back to 100 is −33.33% (exactly −33⅓%). This is the same arithmetic that makes a 50% market loss require a +100% recovery, and it's pinned as a test vector in this tool's suite so the math can never be quietly “fixed” into something friendlier.
| Start | Apply | Then apply | End |
|---|---|---|---|
| 100 | +50% → 150 | −50% of 150 | 75 |
| 100 | +80% → 180 | −80% of 180 | 36 |
| 100 | −50% → 50 | +50% of 50 | 75 |
Percent change: the sign convention, stated plainly
Mode C computes (new − old) ÷ |old| × 100 — the denominator is the absolute value of the start. For positive starts that's the ordinary formula. For negative starts, conventions genuinely disagree: going from −10 to −5, the raw formula (−5 − (−10)) ÷ (−10) gives −50% (this is what Excel returns), even though the value clearly rose. Dividing by |−10| instead gives +50%, so the sign always matches the direction of movement on the number line: −10 → 10 is +200%, 10 → −10 is −200%. This page uses the |old| convention and says so; if you're reconciling against a spreadsheet with negative bases, expect flipped signs there, not different magnitudes.
Two zero cases are handled honestly rather than numerically: a change from 0 has no base (any nonzero move would be “infinite percent”), and “what percent is X of 0” divides by zero — both render an explicit undefined message, never Infinity or NaN. A change to 0 is fine: from 5 to 0 is −100%.
Exact integers, one rounding step
Every number you type is parsed to an exact scaled integer — 7.5 becomes 75 tenths, 84.16 becomes 8416 hundredths — and each answer is formed as a single exact fraction of big integers. Only then is it rounded, once: half-up to 2 decimal places, ties away from zero (0.005 → 0.01, −0.005 → −0.01). Nothing is rounded twice, and no floating-point value ever touches the math, so 12.5% of 84.16 is exactly 10.52, not 10.520000000000001. When rounding actually changed the exact answer, the result is marked with ≈: 1 out of 3 shows as ≈ 33.33% because the true value is 33.333…%, while 45 out of 60 shows a plain 75%. Trailing zeros are trimmed for display (30.00 shows as 30) — that's formatting, not a second rounding.
Honest limits
Two decimal places is a display choice, not a law of nature: if you chain results by copying a rounded value back in (like the 150 → −50% → 75 example does), you're chaining rounded numbers, and for the tiny fraction of cases where the third decimal matters you should carry the exact fraction yourself. Inputs are capped at 15 integer digits and 9 decimals — beyond that the tool refuses rather than approximating. And one adjacent problem this page deliberately does not solve: “what number, increased by 20%, gives 120?” is a reverse percentage (divide by 1.20 — the answer is 100, not 96). For the money version of that trap, use our VAT Calculator, which removes a percentage from a gross total correctly.