如上图所示,罗马数字由7个基本字符组成['I','V','X','L','C','D','M'],阿拉伯数字num转换时需将数字经过求余运算,对千位以上、百位、十位和个位分别进行处理。

一、千位以上

num/1000的结果为n,结果字符串result需重复n次字符‘M’;可抽象如下函数,重复给定字符char, n次.

function repeatC(char,count){

var result="";

for(var i=0;i

result+=char;

}

return result;

}

二、百位、十位和个位的处理

百位、十位、位的处理类似,以个位处理为例:

当1<=n<=3时,result字符串为重复特定字符 'I' n次;

当n==4时,4=5-1 result字符串为"IV";

当5<=n<=8时,result字符串为'V'+repeatC('I',n-5);

当n==9时,9=10-1,result字符串为"XI";

由此可看出个位数可由'I','V','X'三个字符组合而成。可抽象如下函数:

function generBase(num,arr){

var result="";

if(num>=1&&num<=3){

result=repeatC(arr[0],num);

}

if(num===4){

result=arr[0]+''+arr[1];

}

if(num>=5&&num<=8){

result=arr[1]+''+repeatC(arr[0],num-5);

}

if(num===9){

result=arr[0]+""+arr[2];

}

return result;

}

三、转换为罗马数字

转换函数需要对任意输入的数字n做出判断,通过不断的取余分别对不同的数字位做出相应的处理,转换函数如下:

function convert(num) {

var result="";

if(num>=1000){

result=repeatC('M',Math.floor(num/1000));

num %= 1000;

}

if(num>=100){

result+=generBase(Math.floor(num/100),['C','D','M']);

num %= 100;

}

if(num>=10){

result+=generBase(Math.floor(num/10),['X','L','C']);

num %= 10;

}

if(num>=1){

result+=generBase(Math.floor(num),['I','V','X']);

}

return result;

}

示例:convert(2953);

运行结果为:MMCMLIII;

oracle 罗马数字处理,阿拉伯数字转罗马数字(Roman Numeral Converter)相关推荐

  1. 整数转换成罗马数字,Roman Numeral Converter

    /* 思路: 1.定义好符合罗马数字规则的数字及罗马字符 ,然后循环, 若参数的值符合判定条件,则减去当前数,并赋值给结果集,字符串则加上对应的罗马字符,然后继续循环一一对应循环判断赋值. */ fu ...

  2. JavaScript基础算法——Roman Numeral Converter(阿拉伯数转换罗马数字)

    要求: 将给定的数字转换成罗马数字. 所有返回的 罗马数字 都应该是大写形式. 样本: convert(2) 应该返回 "II". convert(3) 应该返回 "II ...

  3. Roman Numeral Converter

    题目 将给定的数字转换成罗马数字 代码 function convert(num) {var arr= [["","I","II",&quo ...

  4. Given a roman numeral, convert it to an integer.

    Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range from 1 t ...

  5. 阿拉伯数字转为罗马数字

    :: Arab2Roman 阿拉伯数字转为罗马数字 @echo off setlocal EnableDelayedExpansion :test if "%~0"==" ...

  6. python罗马数字转换阿拉伯数字_Python将阿拉伯数字转换为罗马数字的方法

    本文实例讲述了Python将阿拉伯数字转换为罗马数字的方法.分享给大家供大家参考.具体实现方法如下: def numToRomanNum(Num): """digital ...

  7. 罗马数字转换成数字java_C趣味编程百例(31)将阿拉伯数字转换为罗马数字

    95.将阿拉伯数字转换为罗马数字 将大于0小于1000的阿拉伯数字转换为罗马数字.阿拉伯数字与罗马数字的对应关系如下: *问题分析与算法设计 题目中给出了阿拉伯数字与罗马数字的对应关系,题中的数字转换 ...

  8. 送给大家一个把阿拉伯数字与罗马数字互换的代码 -.- 仅支持4000以下的转化

    基本字符 I V X L C D M 相应的阿拉伯数字表示为 1 5 10 50 100 500 1000 1>相同的数字连写.所表示的数等于这些数字相加得到的数.如:Ⅲ=3: 2>小的数 ...

  9. 将阿拉伯数字转换为罗马数字

    将阿拉伯数字转换为罗马数字 将大于0小于1000的阿拉伯数字转换为罗马数字.阿拉伯数字与罗马数字的对应关系如下: *问题分析与算法设计 题目中给出了阿拉伯数字与罗马数字的对应关系,题中的数字转换实际上 ...

  10. 将阿拉伯数字变成罗马数字 案例

    键盘录入一个字符串, 要求1:长度为小于等于9 要求2:只能是数字,将内容变成罗马数字 下面是阿拉伯数字跟罗马数字的对比关系: Ⅰ-1.Ⅱ-2.Ⅲ-3.Ⅳ-4.Ⅴ-5.Ⅵ-6.Ⅶ-7.Ⅷ-8.Ⅸ-9 ...

最新文章

  1. David与Vincent的博弈游戏[树型DP]
  2. 乐迪机器人正确操作_什么是机器人示教器?
  3. Mysql小练习(1)
  4. mysql降序后去重_Mysql 数据记录去重后按字段排序
  5. pytorch单机多卡的正确打开方式 以及可能会遇到的问题和相应的解决方法
  6. 项目总结(采用领域驱动开发方式)
  7. zc702运行linux,笔记:ZC702之linux运行
  8. 哗啦啦用Java_哗啦啦
  9. cannot instantiate the type
  10. android如何展示富文本_Android中如何在textView实现富文本
  11. cad2010多个文件并排显示_CAD2010中如何将多个文档并排显示在一个窗口里?
  12. neural-style风格迁移模型实战
  13. 计算机excel还原,3种方法找回电脑上已删除的Excel文档
  14. android wifi 5g,android 判断 wifi 是否是 5G
  15. eas bos客户端获取组织,人员,用户的方法
  16. AnimationEvent事件问题之详细分解
  17. 在linux系统里面进行rar文件的解锁
  18. 关于PCB行业三巨头的一点个人评价
  19. 如何保证测试用例的覆盖率
  20. Android 性能优化必知必会

热门文章

  1. PS照片处理尺寸参考表
  2. 和Keyle一起学ShaderForge – Create Base Shader
  3. 快速制作index.html,介绍一个h5快速制作平台鲁班H5
  4. 最新抖音视频无水印解析接口-突破频率限制
  5. 世界第4疯狂的科学家,在103岁生日那天去世了
  6. 网络共享计算机设置方法,如何设置网络共享(局域网共享如何设置)
  7. Android Xml解析
  8. 个人学习计划(计算机专业),大学生个人学习计划范文
  9. bou计算机术语,2012年计算机一级考试模拟试题及参考答案(27)
  10. 计算机键盘在线识别,电脑的外接键盘无法识别怎么办?