在java中,如何有效地去掉数字的位数?例如,我有13位数字,我想删除前3位数字:
下面是一些代码:
long largeNumber = 1234567890123L;
long finalNumber = removeFirstDigits(largeNumber, 3); // finalNumber == 4567890123L发布于 2013-12-30 02:45:25
在处理基数B中的数字表示时,删除前导数字的诀窍是使用除以基数B的幂的余数;要删除尾随数字,请使用整数除以基数的幂。
具体地说,要删除k n-digit十进制数X的前导小数位,请获得X除以10的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要删除尾随的k小数位,请使用整数除以10^3:
int X = 12345678;
int res = X / 1000; // res = 12345发布于 2013-12-30 02:44:10
数学版
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可以帮助确定这一点。
发布于 2013-12-30 02:44:14
这可能不是最干净的,但您可以始终使用String:
long largeNumber = 123456789101l;
String largeNumberInString = String.valueOf(largeNumber);
long resultingNumber = Long.parseLong(largeNumberInString.substring(3, largeNumberInString.length()));https://stackoverflow.com/questions/20828687
复制相似问题