我想在某个数字前加上某些数字。例如,给定数字1234,我想返回8001234,并且给出12345,我想返回80012345。
我当前的工作解决方案是Integer.parseInt("800" + value)
,它涉及字符串格式化,连接和解析。我正在寻找一种更便宜,更简单的解决方案。 (来自C背景,这看起来很昂贵.Java程序员通常似乎并不关心操作的费用,所以我可能会这样做。)
我考虑过添加8000000(或80000000,8000000等),但这取决于原始数字中的位数,这可能会有所不同。
我很感激任何建议。
(几个月后,2014年1月新增): 作为这个问题的BTW,我的要求已经改变,因此:如果原始数字是7位数,只有前缀“80”,以保持新数字最多为9位数。我不再寻找答案了,因为我打算以简单易懂的方式做到这一点,但我只是想抛出原始问题的曲线球附录。感谢所有给出有用建议的人。
答案 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;