在线转换罗马数字和阿拉伯数字的工具和API
本罗马数字工具的英文版: Roman/Arabic Conversion
前几个罗马数字是:
- I
- II
- III
- IV
- V
- VI
- VII
- VIII
- IX
- X
- XI
- XII
- XIII
- XIV
- XV
您可以在下面的工具中填写罗马数值,也可以填写阿拉伯数字,这个工具会进行相应的转换。
罗马数字和阿拉伯数字的对应转换算法
本工具使用了以下对应关系:$r = array(
"m" => 1000000,
"cm" => 900000,
"d" => 500000,
"cd" => 400000,
"c" => 100000,
"xc" => 90000,
"l" => 50000,
"xl" => 40000,
"x" => 10000,
"Mx" => 9000,
"v" => 5000,
"Mv" => 4000,
"M" => 1000,
"CM" => 900,
"D" => 500,
"CD" => 400,
"C" => 100,
"XC" => 90,
"L" => 50,
"XL" => 40,
"XXX" => 30,
"XX" => 20,
"X" => 10,
"IX" => 9,
"V" => 5,
"IV" => 4,
"I" => 1
);
把罗马数值转换成阿拉伯数字,可以参考这个帖子: How to Convert Roman to Integer in C/C++?
把阿拉伯数字转换成罗马数值的算法: How to Convert Arabic Integers to Roman Numerals?
罗马数字转换成阿拉伯数字的Javascript函数实现
/**
* @param {string}
* @return {number}
*/
var romanToInt = function(s) {
let r = 0;
const rules = {
'I': 1,
'V': 5,
'X': 10,
'L': 50,
'C': 100,
'D': 500,
'M': 1000
};
for (let i = 0; i + 1 < s.length; ++ i) {
const cur = rules[s.charAt(i)];
const next = rules[s.charAt(i + 1)];
if (cur >= next) {
r += cur;
} else {
r -= cur;
}
}
return r + rules[s.charAt(s.length - 1)];
};
阿拉伯数字转换成罗马数字的Javascript函数实现
/**
* @param {number} num
* @return {string}
*/
var intToRoman = function(num) {
const rules = {
"M" : 1000,
"CM" : 900,
"D" : 500,
"CD": 400,
"C": 100,
"XC": 90,
"L": 50,
"XL": 40,
"XXX": 30,
"XX": 20,
"X": 10,
"IX": 9,
"V": 5,
"IV": 4,
"I": 1
}
let res = "";
const romans = Object.keys(rules);
for (let i = 0; i < romans.length; ++ i) {
const val = rules[romans[i]];
while (num >= val) {
num -= val;
res += romans[i];
}
}
return res;
};
罗马数字转换 (API)
以下API可以用于转换罗马数值或者阿拉伯数字。
API例子:
https://romans.justyy.workers.dev/api/romans/?cached&n=1234
返回:
{
"error": null,
"input": "1234",
"result": "MCCXXXIV"
}
https://romans.justyy.workers.dev/api/romans/?cached&n=MCCXXXIV
返回:
{
"error": null,
"input": "MCCXXXIV",
"result": "1234"
}
您还可以通过POST方式进行传递参数:
? curl -s -X POST https://romans.justyy.workers.dev/api/romans/?cached -d "n=1234"
{"error":null,"input":"1234","result":"MCCXXXIV"}
POST参数的API结果不被缓存 CloudFlare CDN, 如果通过 (via ?cached URL) 则结果会被缓存.