[英]How do I select the nth digit in a large integer inside javascript?
當我想選擇第n個字符時,我使用charAt()方法,但在處理整數而不是字符串值時,我可以使用什么?
使用String()
:
var number = 132943154134;
// convert number to a string, then extract the first digit
var one = String(number).charAt(0);
// convert the first digit back to an integer
var one_as_number = Number(one);
這是一個愚蠢的解決方案,但似乎無需轉換為字符串。
var number = 123456789;
var pos = 4;
var digit = ~~(number/Math.pow(10,pos))- ~~(number/Math.pow(10,pos+1))*10;
您可以將數字轉換為字符串並執行相同的操作:
parseInt((number + '').charAt(0))
如果需要現有方法,請將其轉換為字符串並使用charAt。
如果你想要一個避免將它轉換為字符串的方法,你可以重復將游戲除以10來從右邊剝去足夠的數字 - 例如123456789,如果你想要從右到右的數字(6)除以10 3次得到123456,然后得到結果mod 10得到6.如果你想從左邊開始計算你可能做的數字,那么你需要知道整個數字(基數10)數字,您可以從數字的日志基數10中推斷出......所有這些都不可能比將其轉換為字符串更有效。
function digitAt(val, index) {
return Math.floor(
(
val / Math.pow(10, Math.floor(Math.log(Math.abs(val)) / Math.LN10)-index)
)
% 10
);
};
digitAt(123456789, 0) // => 1
digitAt(123456789, 3) // => 4
有點亂。
Math.floor(Math.log(Math.abs(val)) / Math.LN10)
計算數字中的位數(-1)。
var number = 123456789
function return_digit(n){
r = number.toString().split('')[n-1]*1;
return r;
}
return_digit(3); /* returns 3 */
return_digit(6); /* returns 6 */
var num = 123456;
var secondChar = num.toString()[1]; //get the second character
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.