Roman numerals are much more complicated and much less consistent
than most people realise. The regular M DC LX VI system is both
more modern and less capable than anything the Romans would have
recognised. In particular,
- in the 8th century, N (short for "nulla") was adopted for zero
- the Roman system always had fractions like S for 1/2, . for 1/12
- there were numerals for much larger numbers.
Unicode code block [2150] has characters for the Roman numerals
including
216C L ROMAN NUMERAL FIFTY
216D C ROMAN NUMERAL ONE HUNDRED
216E D ROMAN NUMERAL FIVE HUNDRED
216F M ROMAN NUMERAL ONE THOUSAND
2181 ��� ROMAN NUMERAL FIVE THOUSAND
2182 ��� ROMAN NUMERAL TEN THOUSAND
2187 ��� ROMAN NUMERAL FIFTY THOUSAND
2188 ��� ROMAN NUMERAL ONE HUNDRED THOUSAND
(In fact these are ligated versions of forms using "apostrophic" brackets;
the pattern goes as high as you want, e.g., (((|))) for a million.
D and M were originally |) and (|). There is
So the first thing is to make sure that you understand the
requirements for the problem.
- Are you required to produce ASCII characters, required to
produce Unicode ones, or allowed to produce either?