如何删除java中的数字?

时间:2013-12-29 18:37:21

标签: java

在java中,如何以有效的方式删除数字的数字?例如,我有13位数字,我想删除前3位数字:

一些代码:

long largeNumber = 1234567890123L;
long finalNumber = removeFirstDigits(largeNumber, 3); // finalNumber == 4567890123L

3 个答案:

答案 0 :(得分:11)

当您处理基数B中的数字表示时,删除前导数字的技巧是使用除以基数B的幂的余数;要删除尾随数字,请使用整数除以基数。

具体来说,要删除k - 位十进制数n的{​​{1}}前导十进制数字,请将X的除法余数除以10得到幂X

n-k

要删除尾随的int X = 12345678; // n = 8 // Remove 3 leading digits (k=3) // 10 ^ (n-k) = 10 ^ 5 = 100000 int res = X % 100000; // res = 45678 十进制数字,请使用整数除以10 ^ 3:

k

答案 1 :(得分:2)

数学版

private long removeFirstDigits(long number, int left) {
    return number % (long) Math.pow(10, (int) (Math.log10(number) + 1) - left);
}

字符串版本

private long removeFirstDigits(long number, int left) {
    String string = String.valueOf(number);
    return Long.parseLong(string.substring(left, string.length()));
}

我不知道哪个版本效率更高,速度更快。 Microbanchmark可以帮助确定这一点。

答案 2 :(得分:2)

这可能不是最干净的,但你总是可以使用String:

long largeNumber = 123456789101l;
String largeNumberInString = String.valueOf(largeNumber);
long resultingNumber = Long.parseLong(largeNumberInString.substring(3, largeNumberInString.length()));