我有一个10位数的整数。我需要得到这个整数的第7位数字。
我已经找到了一个数学解决方案来得到一个整数的第一位数字。
var myDigit = 2345346792;
var firstDigit = Math.Abs(myDigit);
while (firstDigit >= 10)
{
firstDigit /= 10;
}
我如何从 myDigit 中获取第七个数字?我想避免将其转换为字符串并执行子字符串操作。我希望看到获取第七个数字的数学方法。
有人知道吗?
我有一个10位数的整数。我需要得到这个整数的第7位数字。
我已经找到了一个数学解决方案来得到一个整数的第一位数字。
var myDigit = 2345346792;
var firstDigit = Math.Abs(myDigit);
while (firstDigit >= 10)
{
firstDigit /= 10;
}
我如何从 myDigit 中获取第七个数字?我想避免将其转换为字符串并执行子字符串操作。我希望看到获取第七个数字的数学方法。
有人知道吗?
var seventh_digit = ( myDigit/1000000 ) % 10;
var fifth_and_sixth = ( myDigit/10000 ) % 100;
- Mohammad Jafar Mashhadiint getSeventhDigit(int number)
{
while(number >= 10000000)
number /= 10;
return number % 10;
}
这将获取7位数字以内的数的最后一位。
对于8位或更多位数字,它会除以10,直到数字长度为7位,然后取最后一位。
1000000
,并返回number%100
。这将返回0到99之间的数字。 - David Yaw不使用while循环的数学解决方案:
int myDigit = 2345346792;
var seventh = (myDigit / 1000000) % 10;
//result should be 5, your seventh digit from the right
uint myDigit = 2345346792;
int[] digits = new int[10];
for (int i = 9; i >= 0; i--)
{
digits[i] = (int)(myDigit % 10);
myDigit /= 10;
}
这对于您想要进行的任何操作都应该是有用的。
var nthDigit = (int)((number / Math.Pow(10, nth - 1)) % 10);
其中nth
是数字的第n个数字。
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 ;
}
类似这样的代码(用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;
public static int GetNthDigit(this int value, int digits)
{
double mult = Math.Pow(10.0, digits);
if (value >= mult)
{
while(value >= mult)
value /= 10;
return value % 10;
}
else
{
throw new ArgumentOutOfRangeException("Digits greater than value");
}
}
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));
我希望这可以帮助任何正在寻找类似解决方案的人。