Conversor de Números Romanos: notação subtrativa e por que não existe zero
O sistema numérico romano não é posicional como o decimal (onde a
posição de um dígito determina seu valor, como em 102 vs
210) — é um sistema aditivo com uma exceção subtrativa
específica. Cada símbolo tem um valor fixo (I=1, V=5, X=10, L=50,
C=100, D=500, M=1000), e o valor de uma sequência é, por padrão, a soma
dos símbolos. A exceção — a chamada notação subtrativa
— entra quando um símbolo de valor menor aparece imediatamente antes de
um símbolo de valor maior: nesse caso específico, subtrai-se em vez de
somar (IV = 5 - 1 = 4, em vez de IIII).
As regras exatas da notação subtrativa, não qualquer combinação
A notação subtrativa não permite qualquer par de símbolos menor-maior —
só combinações específicas são válidas pela convenção estabelecida:
I antes de V ou X (4, 9),
X antes de L ou C (40, 90), e
C antes de D ou M (400, 900).
Um conversor de algarismo arábico para romano precisa implementar essa
tabela de exceções explicitamente — não existe uma fórmula genérica que
derive a notação subtrativa automaticamente a partir só dos valores dos
símbolos, é uma convenção histórica codificada como regra fixa.
Por que "zero" e "números negativos" não existem em romano
O sistema numérico romano clássico não tem símbolo para zero (o
conceito de zero como número, não apenas como ausência, é uma
contribuição posterior da matemática indiana) nem representa números
negativos — um conversor correto precisa rejeitar explicitamente a
entrada 0 e qualquer valor negativo, em vez de tentar produzir um
resultado vazio ou malformado. Por convenção prática (não por uma regra
romana antiga formalizada), a maioria das implementações modernas
também limita o intervalo superior a 3999 (MMMCMXCIX) —
acima disso, a notação padrão ficaria excessivamente longa sem uma
convenção amplamente aceita para números maiores (historicamente, uma
barra horizontal sobre o símbolo multiplicava seu valor por 1000, mas
essa notação não é universalmente suportada em texto simples).