Roman numerals: subtractive notation and where they still appear

3 min read

Roman numerals (I, V, X, L, C, D, M) still show up on clock faces, in book chapter numbering, and in copyright dates. This article walks through the rules and the limits.

Symbols and values

SymbolValue
I1
V5
X10
L50
C100
D500
M1000

Seven symbols cover 1 through 3,999.

Additive and subtractive notation

The default rule: place symbols largest first and add:

III = 1 + 1 + 1 = 3
LXX = 50 + 10 + 10 = 70
MMXXIV = 1000 + 1000 + 10 + 10 + 4 = 2024

To avoid four of the same symbol in a row, subtractive notation is used. A smaller symbol placed before a larger one is subtracted:

IV = 5 - 1 = 4    (not IIII)
IX = 10 - 1 = 9   (not VIIII)
XL = 50 - 10 = 40
XC = 100 - 10 = 90
CD = 500 - 100 = 400
CM = 1000 - 100 = 900

Subtractive pairs are restricted to:

  • I before V and X
  • X before L and C
  • C before D and M

IL (49) and IC (99) are not standard; use XLIX and XCIX.

The 3999 ceiling

Standard Roman numerals top out at 3,999 (MMMCMXCIX) because:

  • You don’t write four Ms in a row.
  • There’s no symbol larger than M in the standard set.

Classical extensions used overlines or other notations for larger numbers, but modern usage stops at 3,999.

Year examples

YearRoman
2000MM
2024MMXXIV
1999MCMXCIX
1492MCDXCII
1066MLXVI

Movie and TV credits often show ”© MCMXCIX” (1999).

Zero and negatives

There is no symbol for zero. Medieval scribes adopted “N” (nullus, “nothing”) informally. Negative numbers cannot be expressed at all — both reflect ancient Roman math’s limits.

Fractions

Ancient Romans used base-12 fractions:

  • S = 1/2
  • · = 1/12 (uncia)
  • e.g. VS = 5 + 1/2 = 5.5

Rarely used today, but you’ll see them on coins and historical texts.

Clocks: IIII vs IV

Many clock faces write “4” as IIII rather than IV. Reasons given:

  • Visual symmetry (IIII pairs nicely with VIII opposite).
  • A 14th-century convention.
  • Avoidance of IV as a deity-name abbreviation (one of several historical theories).

Big Ben is a famous exception that uses IV.

Algorithm: decimal → Roman

Greedy “subtract the largest fitting value” algorithm with subtractive pairs pre-registered:

function toRoman(num) {
	const map = [
		[1000, 'M'],
		[900, 'CM'],
		[500, 'D'],
		[400, 'CD'],
		[100, 'C'],
		[90, 'XC'],
		[50, 'L'],
		[40, 'XL'],
		[10, 'X'],
		[9, 'IX'],
		[5, 'V'],
		[4, 'IV'],
		[1, 'I']
	];
	let result = '';
	for (const [value, symbol] of map) {
		while (num >= value) {
			result += symbol;
			num -= value;
		}
	}
	return result;
}

Roman → decimal

Read left to right; if the current symbol is smaller than the next, subtract it:

function fromRoman(s) {
	const map = { I: 1, V: 5, X: 10, L: 50, C: 100, D: 500, M: 1000 };
	let total = 0;
	for (let i = 0; i < s.length; i++) {
		const cur = map[s[i]];
		const next = map[s[i + 1]] ?? 0;
		if (cur < next) total -= cur;
		else total += cur;
	}
	return total;
}

Where they still appear

  • Clock faces — tradition.
  • Book front matter — preface page numbers (i, ii, iii, …).
  • Movie/TV credits — copyright years.
  • Monarchs and popes — Elizabeth II, Francis I.
  • Chemistry — oxidation states (iron(III), etc.).
  • Olympic games — “Games of the XXXIII Olympiad”.

Summary

  • Seven symbols (I, V, X, L, C, D, M) span 1 to 3,999.
  • Additive notation by default; specific pairs use subtractive.
  • No zero, no negatives.
  • The clock IIII is a long-standing exception.
  • Still used in narrow but visible contexts.

To convert between decimal and Roman, the Roman numeral tool on this site does both directions.