其他分享
首页 > 其他分享> > 罗马数字转阿拉伯数字

罗马数字转阿拉伯数字

作者:互联网

罗马数字转阿拉伯数字

罗马数字时位置记数法吗?

根据《计算机科学概论》可以知道,位置记数法的概念为:

位置记数法(positional notation):一种表达数字的系统,数位按顺序排列,每个数位有一个位值,数字的值是每个数位和位值的乘积之和。

又根据罗马数字转换阿拉伯数字0~3999,关于罗马数字的一些概念:

有两条须注意掌握:
1.基本数字 Ⅰ、X 、C 中的任何一个、自身连用构成数目、或者放在大数的右边连用构成数目、都不能超过三个;放在大数的左边只能用一个;
2.不能把基本数字 V 、L 、D 中的任何一个作为小数放在大数的左边采用相减的方法构成数目;放在大数的右边采用相加的方式构成数目、只能使用一个;
相同的数字连写、所表示的数等于这些数字相加得到的数、如:Ⅲ=3;
小的数字在大的数字的右边、所表示的数等于这些数字相加得到的数、 如:Ⅷ=8、Ⅻ=12;
小的数字(限于 I、X 和 C)在大的数字的左边、所表示的数等于大数减小数得到的数、如:Ⅳ=4、Ⅸ=9;
正常使用时、连写的数字重复不得超过三次;
在一个数的上面画一条横线、表示这个数扩大 1000 倍。

很明显,罗马数字根本不是位置记数法。比如数字III,是无法根据它的数位和位值的乘积算出来等于3的。

将八位学号转换成罗马数字

从链接中可知,十进制数字的范围是0~3999,但是我的学号是八位,该如何转换?
通过交流,发现:

因此,决定将学号分成两个部分,四位四位一转换。
我的学号是20211408,即 2021和1408,其中:

然而,我发现一个算不上是问题的问题:
按照2021 1408进行分段,前者很正确,但是后者并非如此,说到底,我这个学号的含义是2021年入学,在1系4班,8号,本质上,我是8号,而不是1408号,因此我又试着将1408分为1、4和08进行转换

这样,能一眼看出我是于2021年入学,在1系4班,学号为8号

这纯粹是我的个人看法

当然,这样子分法数字转化就很简单了……

用python编写一个罗马数字转化为阿拉伯数字的程序

借鉴了蛮多网上的资料的,比如:
https://www.jb51.net/article/138306.htm
https://www.cnpython.com/qa/566044
https://www.cnblogs.com/qiuyuyu/p/9755608.html

最后上传至码云:
罗马数字转阿拉伯数字

对代码原理尝试进行了理解,暂时还未理出头绪,最终理解成果会后续继续编辑,并写在第四周学习总结里。

标签:数字,学号,阿拉伯数字,罗马数字,1408,2021
来源: https://www.cnblogs.com/wangqi3206/p/15399747.html