简单了解下罗马数字
罗马数字从左到右读取。它们是通过基于加减法组合七个字母而形成的。数字的顺序表明是否需要减去或添加值。要记住的是,较大的值通常写在较小的值之前,阅读罗马数字的两个基本规则如下:
- 如果一个字母出现在一个更大的字母之前,则减去。
- 如果一个或多个字母出现在一个更大的字母之后,则添加。
第一条规则意味着当一个较小的值放在一个较大的值之前时,差异是要读取的罗马数字。例如:
- IV = 4
- IX = 9
- XL = 40
- XC = 90
- CM = 900
第二条规则意味着当一个较小的值放在一个较大的值之后时,总和就是要读取的罗马数字。例如:
- VII = 7
- XII = 12
- LIII = 53
- CXIII = 113
- LXXV = 75

能耐心看到这定力还不错哈~特奉上H5转换器自行实用哈
罗马数字字母表
罗马数字 | 阿拉伯数字 | 中文数字 |
---|---|---|
I | 1 | 一 |
V | 5 | 五 |
X | 10 | 十 |
L | 50 | 五十 |
C | 100 | 一百 |
D | 500 | 五百 |
M | 1000 | 一千 |
罗马数字1到10对照表
罗马数字通常从左到右从大到小写。然而,并不是所有情况都按照这个惯例。罗马人不喜欢连续写四个相同的数字,所以他们开发了一种减法系统,较小的数字在较大的数字之前,必须在这里进行减去例如数字四写为' IV '
这里面有I (1) 在V (5) 之前,因较小的数在较大之前须减去,使IV变为四.
罗马数字 | 阿拉伯数字 | 计算方式 |
---|---|---|
I | 1 | 1 |
II | 2 | 1+1 |
III | 3 | 1+1+1 |
IV | 4 | 5-1 |
V | 5 | 5 |
VI | 6 | 5+1 |
VII | 7 | 5+1+1 |
VIII | 8 | 5+1+1+1 |
IX | 9 | 10-1 |
X | 10 | 10 |
罗马数字1到100对照表
罗马数字 | 阿拉伯数字 | 计算公式 |
---|---|---|
I | 1 | 1 |
II | 2 | 1+1 |
III | 3 | 1+1+1 |
IV | 4 | 5-1 |
V | 5 | 5 |
VI | 6 | 5+1 |
VII | 7 | 5+1+1 |
VIII | 8 | 5+1+1+1 |
IX | 9 | 10-1 |
X | 10 | 10 |
XI | 11 | 10+1 |
XII | 12 | 10+1+1 |
XIII | 13 | 10+1+1+1 |
XIV | 14 | 10-1+5 |
XV | 15 | 10+5 |
XVI | 16 | 10+5+1 |
XVII | 17 | 10+5+1+1 |
XVIII | 18 | 10+5+1+1+1 |
XIX | 19 | 10-1+10 |
XX | 20 | 10+10 |
XXI | 21 | 10+10+1 |
XXII | 22 | 10+10+1+1 |
XXIII | 23 | 10+10+1+1+1 |
XXIV | 24 | 10+10-1+5 |
XXV | 25 | 10+10+5 |
XXVI | 26 | 10+10+5+1 |
XXVII | 27 | 10+10+5+1+1 |
XXVIII | 28 | 10+10+5+1+1+1 |
XXIX | 29 | 10+10-1+10 |
XXX | 30 | 10+10+10 |
XXXI | 31 | 10+10+10+1 |
XXXII | 32 | 10+10+10+1+1 |
XXXIII | 33 | 10+10+10+1+1+1 |
XXXIV | 34 | 10+10+10-1+5 |
XXXV | 35 | 10+10+10+5 |
XXXVI | 36 | 10+10+10+5+1 |
XXXVII | 37 | 10+10+10+5+1+1 |
XXXVIII | 38 | 10+10+10+5+1+1+1 |
XXXIX | 39 | 10+10+10-1+10 |
XL | 40 | 50-10 |
XLI | 41 | 50-10+1 |
XLII | 42 | 50-10+1+1 |
XLIII | 43 | 50-10+1+1+1 |
XLIV | 44 | 50-10-1+5 |
XLV | 45 | 50-10+5 |
XLVI | 46 | 50-10+5+1 |
XLVII | 47 | 50-10+5+1+1 |
XLVIII | 48 | 50-10+5+1+1+1 |
XLIX | 49 | 50-10-1+10 |
L | 50 | 50 |
LI | 51 | 50+1 |
LII | 52 | 50+1+1 |
LIII | 53 | 50+1+1+1 |
LIV | 54 | 50-1+5 |
LV | 55 | 50+5 |
LVI | 56 | 50+5+1 |
LVII | 57 | 50+5+1+1 |
LVIII | 58 | 50+5+1+1+1 |
LIX | 59 | 50-1+10 |
LX | 60 | 50+10 |
LXI | 61 | 50+10+1 |
LXII | 62 | 50+10+1+1 |
LXIII | 63 | 50+10+1+1+1 |
LXIV | 64 | 50+10-1+5 |
LXV | 65 | 50+10+5 |
LXVI | 66 | 50+10+5+1 |
LXVII | 67 | 50+10+5+1+1 |
LXVIII | 68 | 50+10+5+1+1+1 |
LXIX | 69 | 50+10-1+10 |
LXX | 70 | 50+10+10 |
LXXI | 71 | 50+10+10+1 |
LXXII | 72 | 50+10+10+1+1 |
LXXIII | 73 | 50+10+10+1+1+1 |
LXXIV | 74 | 50+10+10-1+5 |
LXXV | 75 | 50+10+10+5 |
LXXVI | 76 | 50+10+10+5+1 |
LXXVII | 77 | 50+10+10+5+1+1 |
LXXVIII | 78 | 50+10+10+5+1+1+1 |
LXXIX | 79 | 50+10+10-1+10 |
LXXX | 80 | 50+10+10+10 |
LXXXI | 81 | 50+10+10+10+1 |
LXXXII | 82 | 50+10+10+10+1+1 |
LXXXIII | 83 | 50+10+10+10+1+1+1 |
LXXXIV | 84 | 50+10+10+10-1+5 |
LXXXV | 85 | 50+10+10+10+5 |
LXXXVI | 86 | 50+10+10+10+5+1 |
LXXXVII | 87 | 50+10+10+10+5+1+1 |
LXXXVIII | 88 | 50+10+10+10+5+1+1+1 |
LXXXIX | 89 | 50+10+10+10-1+10 |
XC | 90 | 100-10 |
XCI | 91 | 100-10+1 |
XCII | 92 | 100-10+1+1 |
XCIII | 93 | 100-10+1+1+1 |
XCIV | 94 | 100-10-1+5 |
XCV | 95 | 100-10+5 |
XCVI | 96 | 100-10+5+1 |
XCVII | 97 | 100-10+5+1+1 |
XCVIII | 98 | 100-10+5+1+1+1 |
XCIX | 99 | 100-10-1+10 |
C | 100 | 100 |
罗马数字100到1000对照表
罗马数字 | 阿拉伯数字 | 计算公式 |
---|---|---|
C | 100 | 100 |
CC | 200 | 100+100 |
CCC | 300 | 100+100+100 |
CD | 400 | 500-100 |
D | 500 | 500 |
DC | 600 | 500+100 |
DCC | 700 | 500+100+100 |
DCCC | 800 | 500+100+100+100 |
CM | 900 | 1000-100 |
M | 1000 | 1000 |
罗马数字1000到1000000对照表
罗马数字 | 阿拉伯数字 | 中文数字 |
---|---|---|
M | 1000 | 一千 |
MM | 2000 | 二千 |
MMM | 3000 | 三千 |
MMMM | 4000 | 四千 |
V | 5000 | 五千 |
X | 10000 | 一万 |
L | 50000 | 五万 |
C | 100000 | 十万 |
D | 500000 | 五十五 |
M | 1000000 | 一百万 |
H5转换代码附出处
出处:https://blog.csdn.net/weixin_34403976/article/details/88620721
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>罗马数字转换</title>
<style>
div {
font-size: 20px
}
.showBox,.btnBox,h1 {
overflow: hidden;
width: 600px;
padding: 0;
margin: 0;
color: #333
}
ul {
list-style-type: none;
}
li {
float: left;
line-height: 80px;
height: 80px;
}
.lab {
text-align: right;
width:40%;
}
.Txt {
width: 60%;
}
.ipt {
width: 90%;
height: 40px;
border-radius: 5px;
border: 1px solid #ccc;
font-size: 24px;
padding: 0 10px;
}
.txtBox {
width: 90%;
height: 40px;
border-radius: 5px;
border: 1px solid #ccc;
font-size: 24px;
padding: 0 10px;
background: #f8f8f8
}
.btnBox {
text-align: center;
}
.btnBox>button {
display: inline-block;
height: 40px;
font-size: 20px;
line-height: 40px;
padding: 0 20px;
border-radius:5px;
border: none;
background: #00CCFF;
outline: none;
}
.btnBox>button:active {
background: #00CCCC;
}
button>span {
color: red;
}
h1 {
padding-bottom: 30px;
text-align: center;
}
.cont {
float: left;
padding: 30px 10px 50px;
border: 3px solid #999;
border-radius:20px;
}
.test {
text-align: center;
color: red;
font-size: 22px;
height: 30px;
line-height: 30px;
/* display: none; */
}
</style>
</head>
<body>
<div class="cont">
<h1>罗马数字转换</h1>
<div id="test" class="test"></div>
<ul class="showBox">
<li class="lab"><span type1>阿拉伯数字</span>:</li>
<li class="Txt">
<input type="text" class="ipt" placeholder="请输入数字" id="setIpt" onkeyup="window._o.flag==0 ? (value=value.replace(/[^\d]/g,'')) : value=value.toUpperCase()">
</li>
<li class="lab"><span type2>罗马数字</span>:</li>
<li class="Txt">
<input type="text" class="txtBox" id="showIpt" readonly>
</li>
</ul>
<div class="btnBox">
<button id="_exChange">切换为 <span type2>罗马数字</span> 转 <span type1>阿拉伯数字</span></button>
<button id="_clear">清除</button>
<button id="_switch">计算</button>
</div>
</div>
</body>
<script>
(function(_win){
let _set = document.querySelector('#setIpt'),
_show = document.querySelector('#showIpt'),
_switch = document.querySelector('#_switch'),
_clear = document.querySelector('#_clear'),
_exChange = document.querySelector('#_exChange'),
type1 = document.querySelectorAll('[type1]'),
type2 = document.querySelectorAll('[type2]'),
_test = document.querySelector('#test')
let o = {
flag: 0, // 0:转 罗马数字 1:转 阿拉伯数字
type: ['罗马数字','阿拉伯数字'],
_box:['I','V','X','L','C','D','M'],
test_box:[
'IIII','XXXX','CCCC','MMMM','DD','LL','VV',
'IIV','IIX','XXL','XXC','CCD','CCM',
'IL','IC','ID','IM','XD','XM',
'IVI','IXI','XLX','XCX','CDC','CMC',
'VX','VL','VC','VD','VM','LC','LD','LM','DM',
],
_symbol:[
['','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']
],
clear() {
_set.value = ''
_show.value = ''
_set.focus()
},
Rome() { // 转罗马
let _val = _set.value,
l = _val.length,
_v1 = Number(l>0 ? _val.slice(l-1,l) : 0),
_v2 = Number(l>1 ? _val.slice(l-2,l-1) : 0),
_v3 = Number(l>2 ? _val.slice(l-3,l-2) : 0),
_v4 = Number(l>3 ? _val.slice(0,l-3) : 0),
_v = Number('' + _v4 + _v3 + _v2 + _v1)
if( _v <= 0) {
_test.innerText = '请输入大于0的整数!'
o.clear()
return
}else if( _v >= 4000) {
_test.innerText = '本题仅支持小于4000的正整数,请重新输入!'
o.clear()
return
}
let m1 = o._symbol[0][_v1],
m2 = o._symbol[1][_v2],
m3 = o._symbol[2][_v3],
m4 = o._symbol[3][_v4]
_show.value = '' + m4 + m3+ m2 + m1
},
Arab() { // 转阿拉伯
let _val = _set.value,
l = _val.length,
con = _val.split(''),
_bool = false,
symStr = '',
symStrAll = [],
reduce_l = 0
con.forEach((d)=> {
if(!o._box.includes(d)) {
_bool = true
}
})
if(_bool) {
_test.innerText = '请输入合法的罗马字符!'
o.clear()
return
}
function querySym(str,ind) {
str--
symStr = l>str ? _val.slice(l-str-1,l-reduce_l) : ''
if(o.test_box.includes(symStr)) {
_test.innerText = '请输入合法的罗马字符!'
setTimeout(()=>{
o.clear()
})
return
}
let setObj = {
index: ind,
val: o._symbol[ind].indexOf(symStr) == -1 ? 0 : o._symbol[ind].indexOf(symStr)
}
if(o._symbol[ind] && o._symbol[ind].includes(symStr)) {
symStrAll[ind] = setObj
ind++
reduce_l = reduce_l + symStr.length
return
}else {
symStrAll[ind] = setObj
}
if(str==0) return
querySym(str,ind)
}
o._symbol.forEach((d,i)=>{
querySym(l,i)
})
// 赋值
let lastStr = []
symStrAll.forEach((v,i)=> {
lastStr[i] = v.val
})
_show.value = Number(lastStr.reverse().toString().replace(/,/g,'')) || ''
}
}
_win._o = o
// switch
_switch.onclick = function (e) {
o.flag == 0 ? o.Rome() : o.Arab()
}
_set.oninput = function (e) {
this.value = this.value.trim()
_show.value = ''
_test.innerText = ''
}
// clear
_clear.onclick = function () {
o.clear()
}
// exChange
_exChange.onclick = function () {
o.clear()
o.flag = o.flag ? 0 : 1
type1.forEach((s,i)=> {
s.innerText = o.type[o.flag ? 0 : 1]
})
type2.forEach((s,i)=> {
s.innerText = o.type[o.flag]
})
}
})(window)
</script>
</html>
B0ae个人成长计划-让,进步发生
----利她,有价值,不打扰----
二猫
学废了,学废了
Ayiya1997
@二猫 😄就是整理分享随用随看
王云子
这也太复杂了,脑壳痛😱
Ayiya1997
@王云子 ~就是工作中有用到简单了解整理 下随用随看就好😄