关于leetcode第N位数字,为什么这个案例不能通过呢,有点疑惑,又应该怎么修改呢?然后对比了一下k神的题解想修改一下,发现会报错,为什么左边的不会报错呢?左边的n(int)-count(long)不是也会精度损失吗[疑问]




```java
public static int findNthDigit(int n) {
if(n<=9)//提前判断,可以提高点效率,并且以下是针对两位数及以上的算法
return n;
int nums = 9;//代表各个阶段的数字总个数,先初始化个位有9个
int digit = 1;//代表位数进制,个,十,百,以此类推
int count = 1;//代表几位数,先初始化为一位数
while (true) {
if ((n - nums * digit * count) < 0)
break;//跳出循环后,nums可以代表
n = n - nums * digit * count;
digit = digit * 10;
count++;
}
int remain = n % count;//在数字上的余数,比如123,如果余数为0,则代表末尾3
int findnumber = digit + (n+1) / count - 1;//求出我们要找的那个数字
int last = findnumber % 10;//因为余数为0是该数字的最后一位数
findnumber /= 10;//进行调整
//如果findnumber是1234,那么就得把最后一位放成第一位,拼接成4123
String find = last + "" + findnumber + "";//拼接后就可以按照index巧妙地返回最后的结果了
return find.charAt(remain)-'0';//注意最后返回的是int类型
}
```