0

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

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

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

我会很感激任何建议。

(几个月后添加,2014 年 1 月):作为对这个问题的顺便说一句,我的要求已经改变,因此:如果原始号码是 7 位,则只在前面加上“80”,以保持新号码最多为 9 位. 我不再寻找答案,因为我打算以简单易读的方式来做,但我只是想把原始问题的曲线球附录扔掉。感谢所有提供有用建议的人。

4

3 回答 3

4

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

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

但我无法对性能发表评论,因为我懒得对其进行基准测试。就个人而言,我会选择您在问题中拥有的可维护代码,这对于大多数目的来说可能足够高性能......

于 2013-08-02T15:40:54.850 回答
1

尝试这个

int res = 8000 * (int) Math.pow(10, (int) Math.log10(v) + 1) + v;
于 2013-08-02T15:58:49.677 回答
0

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

例如,

8000000000 + phone_number

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

于 2013-08-02T15:42:43.480 回答