我试图获得第一个数字长,但我从用户那里获得的长度将在13到16位之间,如何在不知道确切长度的情况下获得第一个数字
答案 0 :(得分:1)
只需将其格式化为字符缓冲区并获取第一个。只有当这成为性能瓶颈时,才能回来寻找更复杂的解决方案。
在Java中:
// assuming the number is non-negative,
// otherwise need to deal with sign
String firstDigit = String.valueOf(myLong).substring(0,1);
答案 1 :(得分:1)
你提到这是Java。在Java(以及许多基于C语言)中,整数除法返回一个整数并抛出余数。这意味着当您有一个多位数字(换句话说,大于9)时,您可以除以10以删除最后一位数字。你最终得到的是一位数字,它是原始数字的第一位数字:
if ( myLong < 0 ) {
myLong *= -1;
}
while ( myLong > 9 ) {
myLong /= 10;
}
答案 2 :(得分:0)
数字的位数仅为(int)log_10(n)
。因此,具有与n相同的位数的10的幂是(int)pow(10, (int)log_10(n))
。
因此,最后一位数字只是n / (int)pow(10, (int)log_10(n))
。
在Java中,这转换为:
long n = 8797123456789L;
long numDigs = (long)Math.log10(n);
long lastDigit = n / (long)Math.pow(10, numDigs);
System.out.println(lastDigit);
>> 8