首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >数字的前置数字

数字的前置数字
EN

Stack Overflow用户
提问于 2013-08-02 15:37:20
回答 3查看 273关注 0票数 0

我想把某些数字加到一个数字上。例如,给定1234,我想返回8001234,给定12345,我想返回80012345。

我目前的工作解决方案是Integer.parseInt("800" + value),它涉及字符串格式、连接和解析。我正在寻找一个更便宜,更容易的解决方案。(来自C背景,这似乎很昂贵。Java程序员似乎并不关心操作的费用,所以我可能会同意这样做。)

我考虑添加8000000 (或80000000,800000000等),但这取决于原始数字中的数字数,这可能会有所不同。

如有任何建议,我将不胜感激。

(几个月后,2014年1月):作为一个BTW的问题,我的要求已经改变,因此:如果原来的数字是7位,只有前面的"80",以保持新的数字在最多9位数。我不再寻找答案了,因为我打算用简单、易读的方式去做,但我只想扔掉原始问题的曲线球增编。感谢所有提出有益建议的人。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-08-02 15:58:49

尝尝这个

代码语言:javascript
运行
复制
int res = 8000 * (int) Math.pow(10, (int) Math.log10(v) + 1) + v;
票数 1
EN

Stack Overflow用户

发布于 2013-08-02 15:40:54

像这样的东西可以避免通过字符串:

代码语言:javascript
运行
复制
int value = 1234;
int copy = value;
int toAdd = 8000;
while ((copy /= 10) > 0) toAdd *= 10;
value += toAdd;

但我不能对表演发表评论,因为我不能费心对它进行基准测试。就我个人而言,我会选择问题中的可维护代码,这可能对大多数目的来说都是足够的性能.

票数 4
EN

Stack Overflow用户

发布于 2013-08-02 15:42:43

为什么不使用加法来设置上位呢?

例如,

代码语言:javascript
运行
复制
8000000000 + phone_number

这会给你你想要的结果。此外,从性能的角度来看,整数加法是非常快的,因为硬件具有可以执行操作的特定指令,几乎相当于一个时钟周期。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18020923

复制
相关文章

相似问题

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