簡體   English   中英

如何在javascript內的大整數中選擇第n位?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM