在数字前面加上数字

时间:2013-08-02 15:37:21

标签: java string numbers

我想在某个数字前加上某些数字。例如,给定数字1234,我想返回8001234,并且给出12345,我想返回80012345。

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

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

我很感激任何建议。

(几个月后,2014年1月新增): 作为这个问题的BTW,我的要求已经改变,因此:如果原始数字是7位数,只有前缀“80”,以保持新数字最多为9位数。我不再寻找答案了,因为我打算以简单易懂的方式做到这一点,但我只是想抛出原始问题的曲线球附录。感谢所有给出有用建议的人。

3 个答案:

答案 0 :(得分:4)

这样的事情会避免通过字符串:

int value = 1234;
int copy = value;
int toAdd = 8000;
while ((copy /= 10) > 0) toAdd *= 10;
value += toAdd;

但是我无法对性能发表评论,因为我无法对它进行基准测试。就个人而言,我会考虑你在问题中可维护的代码,对于大多数用途来说,这可能是足够 ...

答案 1 :(得分:0)

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

例如,

8000000000 + phone_number

这将为您提供您正在寻找的结果。此外,从性能角度来看,整数加法非常快,因为硬件具有可执行操作的特定指令,只需1个时钟周期。

答案 2 :(得分:0)

试试这个

int res = 8000 * (int) Math.pow(10, (int) Math.log10(v) + 1) + v;