Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript数字到罗马的转换_Javascript - Fatal编程技术网

Javascript数字到罗马的转换

Javascript数字到罗马的转换,javascript,Javascript,我想把数字转换成罗马(X,IV等) 有人提出了这个解决方案,我正在研究这个解决方案,但我无法理解,即使我调试了它 有人能解释一下发生了什么事吗?我只是想学点JS 函数转换器(num){ var roman={“M”:1000,“CM”:900,“D”:500,“CD”:400,“C”:100,“XC”:90,“L”:50,“XL”:40,“X”:10,“IX”:9,“V”:5,“IV”:4,“I”:1}; str=“”; for(罗马文中的var i){ var q=Math.floor(nu

我想把数字转换成罗马(X,IV等)

有人提出了这个解决方案,我正在研究这个解决方案,但我无法理解,即使我调试了它

有人能解释一下发生了什么事吗?我只是想学点JS

函数转换器(num){
var roman={“M”:1000,“CM”:900,“D”:500,“CD”:400,“C”:100,“XC”:90,“L”:50,“XL”:40,“X”:10,“IX”:9,“V”:5,“IV”:4,“I”:1};
str=“”;
for(罗马文中的var i){
var q=Math.floor(num/roman[i]);//为什么?
num-=q*roman[i];//为什么?
str+=i.repeat(q);//为什么?
}
返回str;
}
说明 下面的注释中描述了代码

//这是一个函数声明
//使用名为num的参数
函数转换器(num){
//这是一个对象,用作查找
var roman={“M”:1000,“CM”:900,“D”:500,“CD”:400,“C”:100,“XC”:90,“L”:50,“XL”:40,“X”:10,“IX”:9,“V”:5,“IV”:4,“I”:1};
log('num='+num);
//这是字符串类型的变量
str=“”;
//for loop以罗马字母遍历每个项目
for(罗马文中的var i){
console.log('i='+i);
//计算传入数字除以罗马值的数学下限
//这将首先将传递的数字除以1000
//示例:转换器阿曼(1201)
//数学楼层(1201/1000)=1
var q=Math.floor(num/roman[i]);//为什么?
console.log('q='+q);
//移除q乘以罗马[i]的值
//示例:转换器阿曼(1201)
//q=1
//num=num-1*1000;
//这使得num不是我们刚刚发现的罗马符号
num-=q*roman[i];//为什么?
log('num='+num);
//这是罗马数字串
//示例:num=1201
//i=1000
//q=1
//str=str+“M”;
//或
//num=3102
//i=1000
//q=3
//str=str+“M”[重复3次]
//str='MMM'在本节末尾
str+=i.repeat(q);//为什么?
log('str='+str);
}
//返回字符串
返回str;
}
console.log(convertToRoman(1201))说明
下面的注释中描述了代码

//这是一个函数声明
//使用名为num的参数
函数转换器(num){
//这是一个对象,用作查找
var roman={“M”:1000,“CM”:900,“D”:500,“CD”:400,“C”:100,“XC”:90,“L”:50,“XL”:40,“X”:10,“IX”:9,“V”:5,“IV”:4,“I”:1};
log('num='+num);
//这是字符串类型的变量
str=“”;
//for loop以罗马字母遍历每个项目
for(罗马文中的var i){
console.log('i='+i);
//计算传入数字除以罗马值的数学下限
//这将首先将传递的数字除以1000
//示例:转换器阿曼(1201)
//数学楼层(1201/1000)=1
var q=Math.floor(num/roman[i]);//为什么?
console.log('q='+q);
//移除q乘以罗马[i]的值
//示例:转换器阿曼(1201)
//q=1
//num=num-1*1000;
//这使得num不是我们刚刚发现的罗马符号
num-=q*roman[i];//为什么?
log('num='+num);
//这是罗马数字串
//示例:num=1201
//i=1000
//q=1
//str=str+“M”;
//或
//num=3102
//i=1000
//q=3
//str=str+“M”[重复3次]
//str='MMM'在本节末尾
str+=i.repeat(q);//为什么?
log('str='+str);
}
//返回字符串
返回str;
}

console.log(convertToRoman(1201))var roman是一个关联数组,键为字符串,值为十进制值

它按降序排列


循环迭代数组,计算给定数字中包含的每个索引值的最大次数,然后从数字中减去该值,以便新的迭代可以继续计算“rest”

var roman是一个关联数组,键为字符串,值为十进制值

它按降序排列


循环迭代数组,计算给定数字中包含的每个索引值的最大次数,然后从数字中减去它,这样新的迭代就可以继续计算“rest”

所有您注释的语句都非常简单。你能解释一下你对它们感到困惑的地方吗,这样我们就可以知道需要解释什么了?代码使用了关于如何将阿拉伯数字转换为罗马数字的假定知识。它最多使用一个较小值的前缀字母来表示从后面较大值字母的减法。它为1990年生产MCMXC,从未生产过XMM。这不是一个javascript问题。你评论的所有语句都非常简单。你能解释一下你对它们感到困惑的地方吗,这样我们就可以知道需要解释什么了?代码使用了关于如何将阿拉伯数字转换为罗马数字的假定知识。它最多使用一个较小值的前缀字母来表示从后面较大值字母的减法。它为1990年生产MCMXC,从未生产过XMM。这不是一个javascript问题。