如何在Java中拆分整数

时间:2013-11-07 01:49:01

标签: java integer

我正在尝试从维基百科实现Karatsuba的算法,我无法继续编码,因为我不知道如何将整数分成下半部分和上半部分。例如,如果我们有一个整数223,那么它应该被分成两个整数22和3。

我怎么可能这样做?

所以它必须像

num1 = 223;

这里发生了一些神奇的事情!

low1 = 22;
low2 = 3;

非常感谢,非常感谢您的帮助!

4 个答案:

答案 0 :(得分:5)

low1 = num1 / 10;
low2 = num1 % 10;

这是你想要完成的事情的要点。我不熟悉算法以及你究竟想要做什么,因此几乎肯定需要额外的逻辑,但这是一个很好的起点。

答案 1 :(得分:2)

您可以使用模数(%)运算符从数字中提取数字。例如

12345 % 10   = 5
12345 % 100  = 45
12345 % 1000 = 345

等等。希望这会有所帮助。

答案 2 :(得分:0)

您可以使用模数(%)运算符删除整数的最后一个数

int num1 = 223;
int num2 = num1%10;
在这种情况下

num2 = 3

答案 3 :(得分:0)

我建议这个算法拆分一个整数:

int i = 233678546; /* The integer you would like to split */

int digitNumber = String.valueOf(i).length(); /* use java.math.Math.log10 if you need a more mathematical approach */

double val = Math.pow(10.0, (double)(digitNumber / 2)); 
int div = new Double(val).intValue();

int left = i / div;
int right = i % div;

StringBuilder sb = new StringBuilder();
sb.append("Value : ");
sb.append(i);
sb.append('\n');

sb.append("Left : ");
sb.append(left);
sb.append('\n');

sb.append("Right : ");
sb.append(right);
sb.append('\n');

System.out.println(sb.toString());