2012-12-06 28 views
5

我有一個10位數的整數。我需要得到那個整數的第7位數字。從一個整數中獲取第七位數

我找到了一個數學解決方案來獲得一個整數的第一個數字。

var myDigit = 2345346792; 

var firstDigit = Math.Abs(myDigit); 
while (firstDigit >= 10) 
{ 
    firstDigit /= 10; 
} 

如何從myDigit獲取第七位數字?我試圖避免投射字符串和做一個子字符串。我想看看獲得第七位數字的數學版本。

有人嗎?

+1

標識符不能以數字開頭。 –

回答

10
int getSeventhDigit(int number) 
{ 
    while(number >= 10000000) 
     number /= 10; 

    return number % 10; 
} 

這將帶號碼的最後一位數字爲7個或更小的數字。

對於8位或更多位的數字,它將除以10,直到數字爲7位數字,然後取最後一位數字。

+0

謝謝!這很好用......我把數學部分弄清楚了。我忘了代碼從右到左讀取,所以它實際上是我需要的第四位數字。 – codingjoe

+0

側面的問題: 如何檢索第5和第6個號碼作爲一對? – codingjoe

+1

要獲得第5位和第6位數字,請將while循環中的數字更改爲「1000000」,並返回「number%100」。這將返回一個從0到99的數字。 –

2

像這樣的東西(C代碼,而應該是容易攜帶):

if (n < 1000000) 
    return 0;  // no 7th digit 
while (n > 9999999) 
    n /= 10;   // now in the range [1,000,000..9,999,999] 
return n % 10; 
+0

一個側面問題:如何檢索第5和第6個數字作爲一對? – codingjoe

10
var seventh_digit = (myDigit/1000000) % 10; 
+2

+1。是的,也不需要循環。 –

+0

一個側面的問題:我如何檢索第5和第6號作爲一對? – codingjoe

+0

'var fifth_and_sixth =(myDigit/10000)%100;' –

3

假設 「零位」 是最顯著的數字,這應該做你:

public static int nthDigit(int value , int n) 
    { 
     if (n < 0) throw new ArgumentException(); 
     if (value < 0) throw new ArgumentException() ; 

     while (n-- > 0) 
     { 
      value /= 10 ; 
     } 

     int digit = value % 10 ; 
     return digit ; 
    } 
+0

現在好了,只需將其作爲int的擴展方法編寫即可,它非常完美:-) – Timothy

4

不同時數學解循環:

int myDigit = 2345346792; 

var seventh = (myDigit/1000000) % 10; 

//result should be 5, your seventh digit from the right 
+0

+1。是的,也不需要循環。 –

+0

一個側面的問題:我如何檢索第5和第6號作爲一對? – codingjoe

+0

@codingjoe(myDigit/10000)%100 – Roast

3

更一般地,可以從數字創建(從零開始)陣列:

uint myDigit = 2345346792; 

int[] digits = new int[10]; 
for (int i = 9; i >= 0; i--) 
{ 
    digits[i] = (int)(myDigit % 10); 
    myDigit /= 10; 
} 

這應該是你希望做任何操作是有用的。

3
var nthDigit = (int)((number/Math.Pow(10, nth - 1)) % 10); 

其中nth是數字的第n位數字。

0

這看起來可能過時了,但我想從一串數字中獲得特定的數字,並且大多數這些解決方案(以及我發現的其他解決方案)都缺乏。所以...我決定了一種解決方法,並將數字轉換爲一個字符串,然後拉取字符串的字符,將它們轉換回一個int。我知道這不是非常有效,但對於小項目我不關心自己的效率。

對於我的任務,我是專門帶有電話號碼的工作,所以這裏是我的代碼:

long number = 5559876543; 
string s = "" + number; 

int areaCode = int.Parse(s.Substring(0, 3)); 
int prefix = int.Parse(s.Substring(3, 3)); 
int suffix = int.Parse(s.Substring(6, 4)); 

我希望這可以幫助任何人尋找一個類似的解決方案。

相關問題