public static void Main()
string[] romanNumbers = new[]{"IIXIIV", "MMLXXIV"};
foreach (string number in romanNumbers)
int decimalNumber = FromRoman(number);
Console.WriteLine("{0}: {1}", number, decimalNumber);
private static int romanValue(int index)
int basefactor = ((index % 2) * 4 + 1);
return index > 1 ? (int)(basefactor * System.Math.Pow(10.0, index / 2)) : basefactor;
public static int FromRoman(string roman)
string literals = "mdclxvi";
int value = 0, index = 0;
foreach (char literal in literals)
value = romanValue(literals.Length - literals.IndexOf(literal) - 1);
index = roman.IndexOf(literal);
return FromRoman(roman.Substring(index + 1)) + (index > 0 ? value - FromRoman(roman.Substring(0, index)) : value);