例如,在“256”中获得“5”。我得到的最接近的是Math.floor(256/10)),但这仍然会返回前面的数字。有没有简单的方法来获得我想要的东西,或者我必须为它做一个大功能?另外,为清楚起见:将定义“n位”。例如,getDigit(2,256)将返回5(第二位数)
答案 0 :(得分:11)
怎么样
(12345 + "")[3]
或
(12345 + "").charAt(3)
从另一端算起
[length of string - digit you want]
所以,如果你想要2,那就是:
5 - 4 = 1
(12345 + "")[1] = "2"
function getNumber (var num, var pos){
var sNum = num + "";
if(pos > sNum.length || pos <= 0){return "";}
return sNum[sNum.length - pos];
}
答案 1 :(得分:11)
Math.floor((256 / 10) % 10)
或更一般地说:
Math.floor(N / (Math.pow(10, n)) % 10)
其中N
是要提取的数字,n
是数字的位置。请注意,这从0开始从右边开始计数(即最低有效数字= 0),并且不考虑n
的无效值。
答案 2 :(得分:6)
首先,您需要将数字转换为字符串,然后您可以正常访问该字符:
var num = 256;
var char = num.toString()[1]; // get the 2nd (0-based index) character from the stringified version of num
修改:另请注意,如果您想先访问它而不先将数字设置为变量,则需要使用双点..
来访问该函数:
var char = 256..toString()[1];
第一个点告诉翻译“这是一个数字”;第二个访问函数。
答案 3 :(得分:0)
这应该这样做:
function getDigit ( position, number ) {
number = number + ""; // convert number to string
return number.substr ( position + 1, 1 ); // I'm adding 1 to position, since 0 is the position of the first character and so on
}
答案 4 :(得分:0)
转换为字符串和子字符串(2,2)?
答案 5 :(得分:0)
试试这个,最后一行是关键:
var number = 12345;
var n = 2;
var nDigit = parseInt((number + '').substr(1,1));
答案 6 :(得分:0)
// You do not say if you allow decimal fractions or negative numbers-
// the strings of those need adjusting.
Number.prototype.nthDigit= function(n){
var s= String(this).replace(/\D+/g,'');
if(s.length<=n) return null;
return Number(s.charAt(n))
}
答案 7 :(得分:0)
如果您想尝试以数学方式完成所有事情:
var number = 256;
var digitNum = 2;
var digit = ((int)(number/(Math.pow(10,digitNum-1))%10;
此代码对从右边开始的数字开始计数,而不是0.如果要将其更改为从0开始,请删除调用中的-1部分。
如果您希望从左侧算起,它会变得更复杂,与其他解决方案类似:
var number = 256;
var digitNum = 2;
var digit = ((int)(number/(Math.pow(10,number.tostring().length-digitNum))%10;
编辑:
此外,这假设您想要数字系统的基数10,但这两者都适用于其他基数。您需要做的就是将最后一行代码中的10个实例更改为代表您要使用的数字系统的基数。 (即十六进制= 16,二进制= 2)
答案 8 :(得分:0)
使用变量&#34; count&#34;控制循环
var count = 1; //starting 1
for(i=0; i<100; i++){
console.log(count);
if(i%10 == 0) count++;
}
输出将填写 1 2 3 4 五 6 7 8 9