我想把某些数字加到一个数字上。例如,给定1234,我想返回8001234,给定12345,我想返回80012345。
我目前的工作解决方案是Integer.parseInt("800" + value)
,它涉及字符串格式、连接和解析。我正在寻找一个更便宜,更容易的解决方案。(来自C背景,这似乎很昂贵。Java程序员似乎并不关心操作的费用,所以我可能会同意这样做。)
我考虑添加8000000 (或80000000,800000000等),但这取决于原始数字中的数字数,这可能会有所不同。
如有任何建议,我将不胜感激。
(几个月后,2014年1月):作为一个BTW的问题,我的要求已经改变,因此:如果原来的数字是7位,只有前面的"80",以保持新的数字在最多9位数。我不再寻找答案了,因为我打算用简单、易读的方式去做,但我只想扔掉原始问题的曲线球增编。感谢所有提出有益建议的人。
发布于 2013-08-02 15:58:49
尝尝这个
int res = 8000 * (int) Math.pow(10, (int) Math.log10(v) + 1) + v;
发布于 2013-08-02 15:40:54
像这样的东西可以避免通过字符串:
int value = 1234;
int copy = value;
int toAdd = 8000;
while ((copy /= 10) > 0) toAdd *= 10;
value += toAdd;
但我不能对表演发表评论,因为我不能费心对它进行基准测试。就我个人而言,我会选择问题中的可维护代码,这可能对大多数目的来说都是足够的性能.
发布于 2013-08-02 15:42:43
为什么不使用加法来设置上位呢?
例如,
8000000000 + phone_number
这会给你你想要的结果。此外,从性能的角度来看,整数加法是非常快的,因为硬件具有可以执行操作的特定指令,几乎相当于一个时钟周期。
https://stackoverflow.com/questions/18020923
复制相似问题