cod*_*joe 5 .net c# algorithm math
我有一个10位数的整数.我需要获得该整数的第7位数.
我找到了一个数学解法来获得整数的第一个数字.
var myDigit = 2345346792;
var firstDigit = Math.Abs(myDigit);
while (firstDigit >= 10)
{
firstDigit /= 10;
}
Run Code Online (Sandbox Code Playgroud)
我如何从myDigit获得第七位数字?我试图避免强制转换为字符串并执行子字符串.我希望看到获得第七位数字的数学版本.
任何人?
Dav*_*Yaw 10
int getSeventhDigit(int number)
{
while(number >= 10000000)
number /= 10;
return number % 10;
}
Run Code Online (Sandbox Code Playgroud)
这将取7位或更少位数的最后一位数字.
对于8位或更多位数字,它将除以10,直到数字长7位,然后取最后一位数字.
没有while循环的数学解决方案:
int myDigit = 2345346792;
var seventh = (myDigit / 1000000) % 10;
//result should be 5, your seventh digit from the right
Run Code Online (Sandbox Code Playgroud)
更一般地,您可以从数字创建一个(从零开始的)数组:
uint myDigit = 2345346792;
int[] digits = new int[10];
for (int i = 9; i >= 0; i--)
{
digits[i] = (int)(myDigit % 10);
myDigit /= 10;
}
Run Code Online (Sandbox Code Playgroud)
这对于您想要进行的任何操作都应该很有用。
var nthDigit = (int)((number / Math.Pow(10, nth - 1)) % 10);
Run Code Online (Sandbox Code Playgroud)
哪里nth是数字的第 n 位。