首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在java中删除数字的位数?

如何在java中删除数字的位数?
EN

Stack Overflow用户
提问于 2013-12-30 02:37:21
回答 3查看 7.1K关注 0票数 0

在java中,如何有效地去掉数字的位数?例如,我有13位数字,我想删除前3位数字:

下面是一些代码:

代码语言:javascript
复制
long largeNumber = 1234567890123L;
long finalNumber = removeFirstDigits(largeNumber, 3); // finalNumber == 4567890123L
EN

回答 3

Stack Overflow用户

发布于 2013-12-30 02:45:25

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

具体地说,要删除k n-digit十进制数X的前导小数位,请获得X除以10的n-k次方的余数

代码语言:javascript
复制
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:

代码语言:javascript
复制
int X = 12345678;
int res = X / 1000; // res = 12345
票数 12
EN

Stack Overflow用户

发布于 2013-12-30 02:44:10

数学版

代码语言:javascript
复制
private long removeFirstDigits(long number, int left) {
    return number % (long) Math.pow(10, (int) (Math.log10(number) + 1) - left);
}

字符串版本

代码语言:javascript
复制
private long removeFirstDigits(long number, int left) {
    String string = String.valueOf(number);
    return Long.parseLong(string.substring(left, string.length()));
}

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

票数 2
EN

Stack Overflow用户

发布于 2013-12-30 02:44:14

这可能不是最干净的,但您可以始终使用String:

代码语言:javascript
复制
long largeNumber = 123456789101l;
String largeNumberInString = String.valueOf(largeNumber);
long resultingNumber = Long.parseLong(largeNumberInString.substring(3, largeNumberInString.length()));
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20828687

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档