ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

罗马数字转阿拉伯数字

2021-10-12 22:05:00  阅读:322  来源: 互联网

标签:数字 学号 阿拉伯数字 罗马数字 1408 2021


罗马数字转阿拉伯数字

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

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

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

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

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

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

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

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

  • 十进制数字的范围是0~3999,最高四位数
  • 我们的学号是八位数
  • 分割成四位 四位两端,每一段均在这个范围之内

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

  • 2021转换成罗马数字为MMXXI
  • 1408转换成罗马数字为MCDVIII
    即:我的学号2021 1408 转换为罗马数字为MMXXI MCDVIII

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

  • 1转换成罗马数字为I
  • 4转换为罗马数字为IV
  • 08转换成罗马数字为VIII
    即:此时我的学号转换为罗马数字是MMXXI I IV VIII

这样,能一眼看出我是于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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有