当不确定长度中有多少位数时,获取Long的第一个数字

时间:2015-04-21 00:12:57

标签: long-integer digits

我试图获得第一个数字长,但我从用户那里获得的长度将在13到16位之间,如何在不知道确切长度的情况下获得第一个数字

3 个答案:

答案 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