JavaScript algorithm for converting Roman numbers to decimal numbers

For converting a Roman numeral into a decimal number, JavaScript provides simple and efficient ways. Roman numerals are a number system that started in ancient Rome and are still used today in different situations. Converting Roman numerals to decimal (integer) values can be useful in many applications, such as date conversions, numbering systems, or educational tools. In this article, we will see a JavaScript algorithm to convert Roman numerals into decimal numbers efficiently.

Understanding Roman Numerals

Roman numerals are a number system that uses combinations of letters from the Latin alphabet to represent values. It uses seven letters to represent values:

Symbol Value
I 1
V 5
X 10
L 50
C 100
D 500
M 1000

Roman numerals follow specific rules:

  • Numbers are usually written from largest to smallest, going from left to right.
  • If a smaller number comes before a larger one, it represents subtraction (e.g., IV = 4).
  • You can't use the same symbol more than three times in a row.

JavaScript Algorithm for Conversion

To convert a Roman numeral into a decimal number, we can follow these steps:

  • Create a mapping object of Roman numeral symbols to their integer values.
  • Loop through the input string character by character.
  • If the current numeral is smaller than the next numeral, subtract its value.
  • Otherwise, add its value to the total.

JavaScript Code Implementation

The following is a simple code implementation for converting Roman numerals into decimal numbers:

function romanToDecimal(roman) {
    const romanValues = {
        'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D': 500, 'M': 1000
    };
    let total = 0;

    for (let i = 0; i < roman.length; i++) {
        const current = romanValues[roman[i]];
        const next = romanValues[roman[i + 1]];
        
        if (next && current < next) {
            total -= current;
        } else {
            total += current;
        }
    }
    
    return total;
}

// Example usage
console.log(romanToDecimal("XII"));    // 12
console.log(romanToDecimal("IX"));     // 9  
console.log(romanToDecimal("MCMXC"));  // 1990
console.log(romanToDecimal("IV"));     // 4
console.log(romanToDecimal("XLII"));   // 42
12
9
1990
4
42

Code Explanation

In the above code, we have successfully implemented a JavaScript algorithm for converting Roman numerals into decimal numbers. Here is the code explanation:

  • We create an object romanValues that maps each Roman numeral to its corresponding decimal value.
  • Then, we initialize total to store the final integer result.
  • We iterate over the string, checking if the current character represents a value smaller than the next one.
  • If current precedes next, we subtract it (e.g., in "IX", I is subtracted because it precedes X).
  • If current doesn't precede next, we add the value to the total.
  • Finally, we return the computed decimal value.

Step-by-Step Example

Let's trace through how "XIV" (14) is converted:

  1. X (10): Next is I (1), X > I, so add 10. Total = 10
  2. I (1): Next is V (5), I
  3. V (5): No next character, so add 5. Total = 14

Complexity Analysis

This algorithm runs in O(n) time complexity, where n is the length of the input Roman numeral string. The space complexity is O(1) as we only use a constant amount of extra space.

Conclusion

In this article, we created a simple JavaScript function that efficiently converts Roman numerals into decimal numbers. This algorithm follows the basic rules of Roman numerals and provides an optimal solution for conversion tasks in JavaScript applications.

Updated on: 2026-03-15T23:18:59+05:30

574 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements