Percentage Change Calculator
Calculate percentage increase or decrease and reverse-solve initial or final values. See complete signed solutions, formulas, and numerical limits.
Enter values to calculate.
Trust summary CVP VERIFIED · CVP protocol 1.0.0-proposed · Core assurance
- Input interpretation
- Enter values to calculate.
- Result
- —
- Assurance
- Core
- Declared partition coverage
- PASS · 5/5 declared partitions (forward, inverse-v2, inverse-v1, invalid-domain, xcal) · Matrix
- Known limitations
- All published p/v1/v2 directions and three-value consistency; complete signed inverse branches, no/unique/two/infinite solutions; exact binary64-rational formulas rounded ties-even, secondary-field range rejection and input-underflow guards; 8-ULP same-sign consistency with strict zero.
- Core CVP does not include live graph, viewport, or pointer interaction.
- Model
- Percent change between initial and final values, or the missing initial/final/% when two are known. Reverse-solving V₁ publishes both signed branches when both are valid.
- Scope
- Interactive evaluation runs locally in the browser. Shared URLs and REST evaluate the same versioned engine (query SSR).
- Verification
- Engine tested · Source checked · v1.2.0 · CVP VERIFIED · CVP protocol 1.0.0-proposed · Core assurance· View Manifest · CVP overview · Specification
- Versions
- Calculation 1.2.0 · CVP protocol 1.0.0-proposed · Evidence 2026-10-29.math-uuce-fields-v1
- Verification revision
- 2026-10-29.math-uuce-fields-v1 · 5/5 property · digest 60c22e494c86
- Legacy regression
- 8/8 tests · Production surface contract 6/6
- Trust layers
- Verification VERIFIED · Production CURRENT · Overall CVP state: VERIFIED under CVP 1.0.0-proposed
- Reference
- O1 model · O2 expected_values · O2 numerical_behavior
- Interfaces
- PASS · UI (SSR) / REST / MCP
- Supplemental domain review
- Not performed
- Named expert review
- Not performed
- CVP suite
- 108/108 golden · 2/2 CVP boundary · 25/25 invalid · 5/5 property · 1/1 metamorphic · 4/4 round-trip · 7/7 cross-interface · 3/3 cross-calculator · 6/6 CVP contract · Manifest
- Sources
- Curran-Everett — Explorations in statistics: the analysis of change
- CalculatorX signed-change convention
- NIST — SI Unit Rules and Style Conventions
- Evidence
- 6 legacy golden · 2 legacy boundary · legacy regression suite · 108/108 oracle-backed golden · 25/25 invalid · Artifact integrity PASS
- Semantic contract
- PASS
Full verification
Formulas
Uses the signed-change convention with |V₁|; reverse-solving may produce multiple valid initial values.
How to use
Choose Solve for
Default solves percent change from initial and final. Switch to Final or Initial to reverse-solve. The URL records solve_for=p|v2|v1.
Enter the two known values
The solved field is calculated. Choose Check all3 to enter all three and check consistency. Shared URLs and machine inputs with all three also check consistency before solving.
Read the signed result and extras
Positive = increase; negative = decrease. The result panel also shows ΔV and, for a unique pair, the signed multiplier and “% of initial.”
Example calculations
Common configurations with formula and result.
Increase
60 → 72
Decrease
3.50 → 2.625
Asymmetry
2.625 → 3.50
Negative start
−25 → 25
Two initials
V₂=25, P=+200%
Quick examples
Common values at a glance.
| From (V₁) | To (V₂) | % change |
|---|---|---|
| 60 | 72 | +20% (increase) |
| 1000 | 1200 | +20% |
| 1000 | 800 | −20% (decrease) |
| 3.50 | 2.625 | −25% |
| 5 | 20 | +300% |
| 20 | 10 | −50% |
| −25 | 25 | +200% |
| −25 | −50 | −100% |
Percentage Change calculator specification
Version 1.2.0 · Engine tested
- Engine tested 8/8 tests · Production surface contract 6/6
- Named expert review Not performed
- Calculation version 1.2.0
- Definition
- Percentage change measures how much a value moved from an initial (old) amount to a final (new) amount, relative to |V₁|. Positive means increase; negative means decrease. Two of initial, final, and % change are inputs; all three can check consistency; Solve for selects the output. Solving for V₁ can have no, unique, two, or infinitely many solutions because the denominator uses |V₁|.
- What it calculates
- Percent change between initial and final values, or the missing initial/final/% when two are known. Reverse-solving V₁ publishes both signed branches when both are valid.
- Inputs
- Initial value V₁ (optional if solving)
- Final value V₂ (optional if solving)
- Percent change P (optional if computing)
- Solve for: p (default) | v2 | v1
- Outputs
- Signed % change with increase/decrease label
- Change (ΔV)
- For a unique pair: signed multiplier V₂/V₁ and final as % of initial
- When solving V₁: 0, 1, or 2 valid initials (status multiple_solutions when two)
- When V₂ = 0 and P = ±100%, solve V₁: INFINITELY_MANY on one sign of V₁
- Formula
% change = (V₂−V₁)/|V₁|×100%. V₂ = V₁(1+P/100) if V₁>0; V₁(1−P/100) if V₁<0. V₁ = V₂/(1+P/100) on the V₁>0 branch; V₂/(1−P/100) on the V₁<0 branch.- Assumptions
- Interactive evaluation runs locally in the browser. Shared URLs and REST evaluate the same versioned engine (query SSR).
- CVP interface evidence is UI (SSR) query-result HTML, REST, and MCP (MCP reuses the calc API handler). That is interface-result consistency, not a live browser session, cache switching, or end-to-end UI test.
- Signed-change convention: denominator is |V₁|, so a move from −100 to −50 is a +50% increase. Some definitions use V₁ without absolute value or restrict to positive baselines.
- Two active fields normally determine the output. Explicit solve_for selects the output. Choose Check all3 to enter all three and check consistency. Shared URLs and machine inputs with all three also check consistency before solving.
- Solving for V₁ is not always unique. The engine returns both valid initials when they exist.
- Units
- V₁ and V₂ in the same units; result in %
- Boundary conditions
- V₁ = 0 → INITIAL_VALUE_ZERO (percent change undefined)
- Fewer than two inputs → MISSING_REQUIRED_INPUT
- Invalid solve_for → INVALID_SOLVE_FOR
- Positive-initial reverse branch: 1 + P/100 = 0 (P = −100%) is omitted
- Negative-initial reverse branch: 1 − P/100 = 0 (P = +100%) is omitted
- Solve V₁ may have 0, 1, or 2 solutions
- V₂ = 0, P = −100%, solve V₁ → INFINITELY_MANY (any V₁ > 0)
- V₂ = 0, P = +100%, solve V₁ → INFINITELY_MANY (any V₁ < 0)
- V₂ = 0 and P ≠ ±100%, solve V₁ → NO_REAL_SOLUTION
- All three values not matching within 8 ULP (same-sign nonzero; strict zero) → status inconsistent, code INCONSISTENT_INPUTS
- Numerical precision
- Computation uses IEEE-754 binary64 (JavaScript Number).
- Each published numerical field is evaluated using exact rational formulas of normalized binary64 inputs and rounded once to nearest ties-even. Display uses the shortest round-trippable binary64 string (up to 17 significant digits).
- REST and SSR return the engine object. value is the solved scalar, the first candidate for two solutions, or null for infinite solutions. Complete candidates, solutions and signed branches are published separately; do not discard the second candidate.
- Interactive evaluation, shared URLs, and REST use the same formulas, solve_for contract, and error codes.
- Example
- (72−60)/|60|×100% = 20%
- Validation cases
10 published on this page · 8/8 tests · Production surface contract 6/6 · View evidence
- 60 → 72 → +20%
- 3.50 → 2.625 → −25%
- −25 → 25 → +200%
- 5 → 20 → +300%
- V₁=−25, P=200% (solve V₂) → V₂=25
- V₂=25, P=+200% (solve V₁) → 8.333… or −25
- V₁=0 → error INITIAL_VALUE_ZERO
- V₂=0, P=−100%, solve V₁ → INFINITELY_MANY (any V₁ > 0)
- V₂=0, P=+100%, solve V₁ → INFINITELY_MANY (any V₁ < 0)
- V₂=25, P=−100%, solve V₁ → error NO_REAL_SOLUTION
- Sources
- Curran-Everett — Explorations in statistics: the analysis of change — Relative change as (final − initial) / initial · accessed 2026-08-28Supports: Documents a relative-change definition that divides directly by the initial value rather than |initial|. Negative-baseline percentage change is therefore not a single universal convention.
- CalculatorX signed-change convention — |V₁| denominator, piecewise inverse, and multiple V₁ solutionsSupports: % change = (V₂−V₁)/|V₁|×100% (undefined at V₁ = 0). Inverse: V₂ = V₁(1+P/100) if V₁>0 and V₁(1−P/100) if V₁<0. Solving V₁ publishes both signed branches, INFINITELY_MANY at V₂=0 with P=±100%, and NO_REAL_SOLUTION when no branch is valid.
- NIST — SI Unit Rules and Style Conventions — Percent and fractionsSupports: The symbol % represents the number 0.01. Thus p% = p/100 and a part of p% of base b equals b×p/100; inverse percentage equations are algebraic rearrangements. CalculatorX’s negative-baseline signed-change convention is separately specified, not attributed to NIST. Mathematical reference only; not implementation validation or an endorsement of CalculatorX.
- Curran-Everett — Explorations in statistics: the analysis of change — Relative change as (final − initial) / initial · accessed 2026-08-28
- Calculation version
- 1.2.0
Background
Interpretation and common distinctions.
What does this percentage change calculator compute?
Percentage change measures how much a value moved from an initial (old) amount to a final (new) amount, relative to |V₁|. Positive means increase; negative means decrease. Two of initial, final, and % change are inputs; all three can check consistency; Solve for selects the output. Solving for V₁ can have no, unique, two, or infinitely many solutions because the denominator uses |V₁|.
The published formula or method is % change = (V₂−V₁)/|V₁|×100%. V₂ = V₁(1+P/100) if V₁>0; V₁(1−P/100) if V₁<0. V₁ = V₂/(1+P/100) on the V₁>0 branch; V₂/(1−P/100) on the V₁<0 branch.. The following references support the stated mathematics or method:
- NIST — SI Unit Rules and Style Conventions: The symbol % represents the number 0.01. Thus p% = p/100 and a part of p% of base b equals b×p/100; inverse percentage equations are algebraic rearrangements. CalculatorX’s negative-baseline signed-change convention is separately specified, not attributed to NIST. Mathematical reference only; not implementation validation or an endorsement of CalculatorX.
Which inputs and limits should you check?
Percentage change uses the starting value as its reference. The signed-change and zero-reference cases follow this calculator’s documented convention.
The worked example uses 60 → 72 with 12/|60|×100%. Compare it with the Example calculations and the complete result for the same inputs.
How can you verify and cite this result?
CalculatorX is responsible for this page. The mathematical references above explain the model; implementation checks and their scope are documented separately in the math.percent_change v1.2.0 Evidence and capability contract. Read the displayed verification and production state together with the specification's numerical limits.
Use the clean calculator URL to cite the tool. A shared input link identifies a particular calculation. Content updates, numerical verification, and domain reviews have separate dates and scopes.
What is percentage change?
Percentage change tells you how much a quantity moved from an initial (old) value V₁ to a final (new) value V₂, relative to the start.
- Positive result → increase
- Negative result → decrease (a −25% change is a 25% decrease)
Use it when order matters (“from … to …”). For a directionless comparison of two numbers, use percentage difference instead.
Change vs difference vs error
| Baseline | Sign | |
|---|---|---|
| % change | Initial value | + increase / − decrease |
| % difference | Average of both | Always ≥ 0 |
| % error | True/accepted value | Usually ≥ 0 |
CalculatorX Percent Error defaults to the absolute-value form, so the result is ≥ 0. A signed form is opt-in.
Signed-change convention
CalculatorX uses |V₁| as the denominator:
% change=(V₂−V₁)/(|V₁|)× 100% (V₁ ≠ 0)
so the sign follows the numerical direction of change when the initial value is negative. A move from −25 to 25 is a +200% increase; from −100 to −50 is a +50% increase (less negative).
This is an explicit convention, not a universal law. Some educational sources also use |Old|. Other statistical treatments divide by V₁ itself and may restrict the formula to a positive baseline.
Inverse formulas
Equivalently, V₂ = V₁ + (P/100) |V₁|. Expanding the absolute value gives the signed branches:
V₂ = V₁(1+P/100) when V₁>0
V₂ = V₁(1−P/100) when V₁<0
Solving for the initial value is the same relation run backward. Each branch is valid only when the solved V₁ has the assumed sign:
V₁ = V₂/(1+P/100) when that V₁>0 and 1+P/100≠ 0
V₁ = V₂/(1−P/100) when that V₁<0 and 1−P/100≠ 0
For V₂=25 and P=+200%, both V₁=25/3 and V₁=−25 satisfy the definition. The calculator returns two valid initial values instead of picking one.
Special cases: V₁=0 is undefined; P=−100% omits the positive-start reverse branch; P=+100% omits the negative-start reverse branch. If V₂=0 and P=−100%, every V₁>0 works; if V₂=0 and P=+100%, every V₁<0 works.
Numerical range and precision
Enter finite binary64 numbers or decimal strings (up to512 characters). Aliases must agree; unknown fields and invalid solve directions are rejected. Inputs round to binary64 first. Formulas are evaluated exactly for those normalized operands, then each published field rounds once, ties to even. The display uses shortest round-trip decimals; it does not track measurement significant figures.
Initial0 is undefined. Decimal-string underflow and nonzero result underflow or overflow, including secondary fields and any valid initial-value branch, return NUMERIC_RANGE: rescale. Raw JSON numeric literals that underflow during parsing return NUMERIC_UNDERFLOW; a partial inverse set is never returned as complete. Near-zero initial values and inverse denominators near P=±100 amplify input rounding. All three inputs check percentages within8ULP only when nonzero with the same sign; zero must match exactly. Solving final preserves the entered P even when the final value rounds unchanged (resolution_limited). An infinite outcome states a positive/negative initial constraint; no-solution is a recoverable error.
Interactive calculations stay local; shared URLs and REST/MCP transmit inputs to the server, and local history may retain results on this device.
Related tools
Other calculators in this family: Percent Error Calculator, Percentage Calculator, Proportion Calculator, Ratio Calculator . Explore all Percent, Ratio & Proportion.
Frequently asked questions
Key distinctions behind the calculation.
What is percentage change?
It is the relative change from an initial value to a final value, as a percent of |initial|. Positive means increase; negative means decrease.
How do I calculate percent change?
Subtract initial from final, divide by the absolute value of the initial, multiply by 100: (final − initial) / |initial| × 100%.
Why use absolute value of the initial?
This is CalculatorX’s signed-change convention: when the starting value is negative, the sign of the result still follows the numerical direction of change (less negative is an increase). Some definitions divide by V₁ directly or refuse negative baselines.
Is percent change the same as percent difference?
No. Change uses the initial value as the baseline. Difference divides |A−B| by the average of A and B and is always non-negative.
Why does reversing the numbers give a different percent?
Because the baseline changes. A 25% drop from 3.50 is not the same size as a 25% rise from 2.625.
Can I solve for the final value from a percent change?
Yes. Choose Solve for → Final. V₂ = V₁(1 + P/100) when V₁ > 0, and V₂ = V₁(1 − P/100) when V₁ < 0. Equivalently V₂ = V₁ + (P/100)·|V₁|.
Why can solving for the initial value give two answers?
Because |V₁| is not linear in V₁. For V₂ = 25 and P = +200%, both V₁ = 25/3 ≈ 8.333 and V₁ = −25 satisfy the definition. The engine publishes both instead of silently picking one.
When is there no initial value, or infinitely many?
V₁ = 0 is always undefined. Positive-start reverse-solve is undefined at P = −100%; negative-start is undefined at P = +100%. If V₂ = 0 and P = −100%, every V₁ > 0 works (INFINITELY_MANY). If V₂ = 0 and P = +100%, every V₁ < 0 works. Other (V₂, P) pairs can have no real V₁.
Where is percent change used?
Prices, salaries, population growth rates, investment returns, and any “old vs new” comparison where order matters.