罗马数字到阿拉伯数字转换


罗马数字

阿拉伯数字

关于罗马数字到阿拉伯数字转换:

此在线罗马数字到阿拉伯数字转换工具可帮助您将一个罗马数字转换为阿拉伯数字. 输入罗马数字, 阿拉伯数字会显示在结果框中.

罗马数字系统(Roman Numerals):

罗马数字用拉丁字母代表数字 ("I" 代表 "1", "V" 代表 "5", "X" 代表 "10", "L" 代表 "50", "C" 代表 "100", "D" 代表 "500", "M" 代表 "1000"). 罗马数字系统经常用在论文和书籍排序中.

comic roman numerals to numbers

如何进行罗马数字到阿拉伯数字转换?

  1. 步骤1: 按顺序记住拉丁字母代表的数值 ('I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D': 500, 'M': 1000).

  2. 步骤2: 从左到右, 如果拉丁字母出现在比它大的拉丁字母之前,减去这个拉丁字母代表的数值.

    例2.1: IV = V − I = 5 − 1 = 4

    例2.2: XL = X − L = 50 − 10 = 40

  3. 步骤3: 其他情况,增加这个拉丁字母代表的数值.

    例3.1: XXXV = X + X + X + V = 10 + 10 + 10 + 5 = 35

    例3.2: CXXIII = C + X + X + I + I + I = 100 + 10 + 10 + 1 + 1 + 1 = 123

例1: 罗马数字 "CXLVI" 转换为阿拉伯数字:

CXLVI = C + XL + V + I = 100 + (500-10) + 5 + 1 = 146

例2: 罗马数字 "CDXCIV" 转换为阿拉伯数字:

CDXCIV = CD + XC + IV = (500-100) + (100-10) + (5-1) = 494

罗马数字到阿拉伯数字转换表:

罗马数字 阿拉伯数字 罗马数字 阿拉伯数字
I 1 XXI 21
II 2 XXII 22
III 3 XXIII 23
IV 4 XXIV 24
V 5 XXV 25
VI 6 XXVI 26
VII 7 XXVII 27
VIII 8 XXVIII 28
IX 9 XXIX 29
X 10 XXX 30
XI 11 XXXI 31
XII 12 XXXII 32
XIII 13 XXXIII 33
XIV 14 XXXIV 34
XV 15 XXXV 35
XVI 16 XXXVI 36
XVII 17 XXXVII 37
XVIII 18 XXXVIII 38
XIX 19 XXXIX 39
XX 20 XL 40

链接:

维基百科 (罗马数字系统): https://en.wikipedia.org/wiki/Roman_numerals

用Python进行罗马数字到阿拉伯数字转换:

def transform_roman_numeral_to_number(roman_numeral):
    roman_char_dict = {'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D': 500, 'M': 1000}
    res = 0
    for i in range(0, len(roman_numeral)):
        if i == 0 or roman_char_dict[roman_numeral[i]] <= roman_char_dict[roman_numeral[i - 1]]:
            res += roman_char_dict[roman_numeral[i]]
        else:
            res += roman_char_dict[roman_numeral[i]] - 2 * roman_char_dict[roman_numeral[i - 1]]
    return res


roman_numeral_input = 'MMXVIII'
number_output = transform_roman_numeral_to_number(roman_numeral_input)
print('Roman numeral {0} equal to:{1}'.format(roman_numeral_input, number_output))

-------------------
Roman numeral MMXVIII equal to:2018

用Java进行罗马数字到阿拉伯数字转换:

import java.util.Map;
import java.util.HashMap;

public class NumberConvertManager {
    public static int transform_roman_numeral_to_number(String roman_numeral) {
        Map<Character, Integer> roman_char_dict = new HashMap<Character, Integer>();
        roman_char_dict.put('I', 1);
        roman_char_dict.put('V', 5);
        roman_char_dict.put('X', 10);
        roman_char_dict.put('L', 50);
        roman_char_dict.put('C', 100);
        roman_char_dict.put('D', 500);
        roman_char_dict.put('M', 1000);
        int res = 0;
        for (int i = 0; i < roman_numeral.length(); i += 1) {
            if (i == 0 || roman_char_dict.get(roman_numeral.charAt(i)) <= roman_char_dict.get(roman_numeral.charAt(i - 1)))
                res += roman_char_dict.get(roman_numeral.charAt(i));
            else
                res += roman_char_dict.get(roman_numeral.charAt(i)) - 2 * roman_char_dict.get(roman_numeral.charAt(i - 1));
        }
        return res;
    }

    public static void main(String[] args) {
        String roman_numeral_input = "MMXVIII";
        int number_output = transform_roman_numeral_to_number(roman_numeral_input);
        System.out.println("Roman numeral " + roman_numeral_input + " equal to:" + number_output);
    }
}

-------------------
Roman numeral MMXVIII equal to:2018