罗马数字是欧洲在阿拉伯数字(实际上是印度数字)传入之前使用的一种数码,现在应用较少。它的产生晚于中国甲骨文中的数码,更晚于埃及人的十进制数字。但是,它的产生标志着一种古代文明的进步。只是没有数字0。
罗马数字采用七个罗马字母作数字、即Ⅰ(1)、X(10)、C(100)、M(1000)、V(5)、L(50)、D(500)。
记数的方法:
- 相同的数字连写,所表示的数等于这些数字相加得到的数,如 Ⅲ=3;
- 小的数字在大的数字的右边,所表示的数等于这些数字相加得到的数,如 Ⅷ=8、Ⅻ=12;
- 小的数字(限于 Ⅰ、X 和 C)在大的数字的左边,所表示的数等于大数减小数得到的数。只有 CM(900)、CD(400)、XC(90)、XL(40)、IX(9)、IV(4) 组合;
- 在一个数的上面画一条横线,表示这个数增值 1,000 倍
阿拉伯数字 1 -- 3999 转为罗马数字的参考程序:
public class Main {
public String intToRoman(int num) {
String[][] map={
{"","I","II","III","IV","V","VI","VII","VIII","IX"},
{"","X","XX","XXX","XL","L","LX","LXX","LXXX","XC"},
{"","C","CC","CCC","CD","D","DC","DCC","DCCC","CM"},
{"","M","MM","MMM"}
};
StringBuilder roman = new StringBuilder();
roman.append(map[3][num/1000%10]);
roman.append(map[2][num/100%10]);
roman.append(map[1][num/10%10]);
roman.append(map[0][num%10]);
return roman.toString();
}
}