Numeric representation using capitalised letters.
I - 1
II - 2
III - 3
IV - 4 (Not IIII)
V - 5
VI - 6
VII - 7
VIII - 8
IX - 9
X - 10
'Pay attention Bart, If you don't learn your Roman Numerals, you'll never know when certain Hollywood movies were copyrighted.' - Ms. Krabaple
More Roman numerals:
L = 50
C = 100
D = 500
M = 1000

When a smaller number is placed before a larger one, its value should be subtracted from the latter.

In practice, IIII sometimes has been accepted usage for 4. For that matter, IIC was sometimes used to mean 98. There's also some question about whether you have to subtract only the next smallest number, as in XCIX for 99, or whether it's okay to just go for IC. Enigma's album MCMXC A.D. could probably just as well have been MXM A.D. in the real world, but proper, prescriptive usage would frown upon that sort of thing.

Here's code to convert numbers from arabic to roman numerals (up to 5000, I was lazy and ASCII doesn't have those funky characters with bars above them).

The code is, as surprising as it may sound, in Rexx. It was written by me today, in Rexx just for the heck of it. =)

I should have written this in some old IBM mainframe assembler to get the feel of archaicity... =)

/* Ideas from britannica.com - thanks to the wise ones there
   I = 1, V = 5, X = 10, L = 50, C = 100, D = 500, M = 1000
   This *could* have been implemented more... intelligently, but
   that would certainly have been overkill.
*/
RomanNum: procedure; parse arg number
  /* The Ancient Romans Were Not Y0 Compliant. */
  if number <= 0 then return number          /* No zero, no negative numbers */
  if number % number != 0 then return number /* No decimal numbers */
  if number > 5000 then return number        /* No numbers above 5000 either -
					        limitation of ASCII, mostly */

  number = right(number,4,'0')               /* Pad with zeroes */
  nthousands = value(substr(number,1,1))     /* Split apart per number */
  nhundreds = value(substr(number,2,1))
  ntens = value(substr(number,3,1))
  nones = value(substr(number,4,1))

  select
	  when nones = 1 then cones = 'I'
  	  when nones = 2 then cones = 'II'
	  when nones = 3 then cones = 'III'
	  when nones = 4 then cones = 'IV'
	  when nones = 5 then cones = 'V'
	  when nones = 6 then cones = 'VI'
	  when nones = 7 then cones = 'VII'
	  when nones = 8 then cones = 'VIII'
	  when nones = 9 then cones = 'IX'
	  when nones = 0 then cones = ''
	  end
  
  select
	  when ntens = 1 then ctens = 'X'
  	  when ntens = 2 then ctens = 'XX'
	  when ntens = 3 then ctens = 'XXX'
	  when ntens = 4 then ctens = 'XL'
	  when ntens = 5 then ctens = 'L'
	  when ntens = 6 then ctens = 'LX'
	  when ntens = 7 then ctens = 'LXX'
	  when ntens = 8 then ctens = 'LXXX'
	  when ntens = 9 then ctens = 'XC'
	  when ntens = 0 then ctens = ''
	  end

  select
	  when nhundreds = 1 then chundreds = 'C'
  	  when nhundreds = 2 then chundreds = 'CC'
	  when nhundreds = 3 then chundreds = 'CCC'
	  when nhundreds = 4 then chundreds = 'CD'
	  when nhundreds = 5 then chundreds = 'D'
	  when nhundreds = 6 then chundreds = 'DC'
	  when nhundreds = 7 then chundreds = 'DCC'
	  when nhundreds = 8 then chundreds = 'DCCC'
	  when nhundreds = 9 then chundreds = 'CM' /* M's appended */
	  when nhundreds = 0 then chundreds = ''
	  end

  cthousands = copies('M',nthousands)
  
  result = cthousands || chundreds || ctens || cones
  return result

Tested under Linux with Regina Rexx interpreter.

Actually, originally IIII was indeed the standard representation of 4, as was VIIII for 9, xxxx for 40 etc., It was only around the 2nd century BCE that these older forms were replaced with IV, IX and XL respectively.

The Roman numeric system revolved around the use of letters to represent numbers.

You may notice that the Roman numeric system did not cater for zero. This left it at a severe disadvantage to the Arabic system when monetary calculations needed to be done.

One possible reason why the Romans had not discovered zero as a concept is that their mathematics was mainly concerned with geometry, therefore always dealing in values above 0. Another advantage the arabic system had over the Roman system is that there are fewer figures needed, since the presence of a zero allows one to start again at 10, 20...90, 100 etc. This makes the arabic system far more suitable for calculations.

The Roman numeric system can still be seen in use at the end of films, however, to denote the year in which it was made. Also, Roman numerals in their lower case forms are sometimes used for numbering lists in books.

The origin of most of the numerals is obvious: I is a finger, V is a hand, C stands for centum, and M stands for mille. I don't know where L comes from, but D for 500 is apparently derived from half a thousand. It uses a sign we no longer have in 'modern' Roman numerals, the apostrophus, but which had several uses in the early system. This was a reversed C. If I represent it imperfectly by a closing bracket, then I) was 500 and CI) was 1000. The (symmetric) sign CI) could well have arisen from a rounded letter M for mille 'thousand', then the pieces disassembled to give the half-a-thousand sign I), later written as D. I believe this is correct but cannot swear to it that I) was prior to D.

The I) symbol was multiplied by ten by adding apostrophi: I)) = 5000, I))) = 50 000. Adding as many C's in front doubled them: CI) = 1000, CCI)) = 10 000, CCCI))) = 100 000, and so on. (These would definitely look better if you envisaged them with the reversed C.)

One ancient usage that has survived is that of IIII instead of IV on clock faces.

In the Middle Ages they sometimes used the rest of the alphabet for extra numerals. This appears to have been a pretty slapdash requisition, as there are repeats and gaps, and the order doesn't make much sense. I have no idea how widespread this usage was, if at all, or whether it was completely esoteric.

S = 7 or 70, O = 11, F = 40, A = 50 or 500, S = 70 or 7, R = 80, N = 90, Y = 150, T = 160, H = 200, E = 250 and K = 250, B = 300, G = 400 and P = 400, A = 500 or 50 and Q = 500, Z = 2000.

Over-barred letters for thousands are a mediaeval invention: I'll represent them here as e.g. V for 5000. If my source (below) is to be trusted not to contain misprints, several anomalies included B for 3000, A for 5000, and S for 70 000 (not 7000), and the lack of K, Z.

Millions were indicated by putting vertical bars around numbers, starting with either |X| or |X| for 1 000 000.

They also sometimes reversed D, with the same value. The apostrophus could be written small, which I'll show that here as o: an example is from a printed book of as late as 1704, where the date is written cIo Io CCIV.

With the development of lower case letters these were also used in numerals. When two or more i's occurred together the last of them was often written as j, as in xiij '13'. I and J were treated as the same letter until about the eighteenth century.

All above gleaned from Chambers Dictionary

Another fun thing they used to do with Roman numerals was numerology, in the obvious way: add up the classical ones and ignore the rest, so just find a name containing DCLXVI and you're laughing. Or your head is swivelling round in a circle.

Log in or register to write something here or to contact authors.