Java 如何将一个大整数除以整数?

Java 如何将一个大整数除以整数?,java,int,biginteger,Java,Int,Biginteger,(编辑:在更多的人投票之前,我确实先看了JavaDoc,但是因为我是初学者,我不确定文档中的什么地方。看看我对Jim G的回复,下面是我的回答。我知道这个问题可能被认为是太基本的了。但是我认为它对我的情况下的其他初学者有一定的价值。所以请考虑完整。投票前从初学者的角度来看情况。) 我想用一个大整数除以一个常规整数(例如int),但我不知道怎么做。我在Google和Stack Exchange上进行了快速搜索,但没有找到任何答案 那么,我如何将一个大整数除以一个整数呢?当我们进行此操作时,我如何将

(编辑:在更多的人投票之前,我确实先看了JavaDoc,但是因为我是初学者,我不确定文档中的什么地方。看看我对Jim G的回复,下面是我的回答。我知道这个问题可能被认为是太基本的了。但是我认为它对我的情况下的其他初学者有一定的价值。所以请考虑完整。投票前从初学者的角度来看情况。)

我想用一个大整数除以一个常规整数(例如int),但我不知道怎么做。我在Google和Stack Exchange上进行了快速搜索,但没有找到任何答案


那么,我如何将一个大整数除以一个整数呢?当我们进行此操作时,我如何将大整数加/减到整数,将大整数与整数进行比较,等等?

整数
转换为
大整数
,然后将两者都除以
大整数
,如下所示:

BigInteger b = BigInteger.valueOf(10);
int x = 6;

//convert the integer to BigInteger.

BigInteger converted = new BigInteger(Integer.toString(x));
//now you can divide, add, subtract etc.

BigInteger result = b.divide(converted);  //but this will give you Integer values.

System.out.println(result);

result = b.add(converted);

System.out.println(result);
上面的除法将给出除法的
Integer
值,要获得精确值,请使用
BigDecimal

编辑:

要删除上述代码中的两个中间变量
已转换
结果

BigInteger b = BigInteger.valueOf(10);
int x = 6;

System.out.println(b.divide(new BigInteger(Integer.toString(x))));

Scanner in = new Scanner(System.in);
System.out.println(BigInteger.valueOf((in.nextInt())).divide(new   BigInteger(Integer.toString(in.nextInt()))));

只需使用
biginger.valueOf(long)
factory方法。int可以隐式地“加宽”为long…从小变大时总是这样,例如byte=>short,short=>int,int=>long

BigInteger bigInt = BigInteger.valueOf(12);
int regularInt = 6;

BigInteger result = bigInt.divide(BigInteger.valueOf(regularInt));

System.out.println(result); // => 2

请阅读将int转换为BigInteger,然后使用各种方法获取BigInteger参数。谢谢Jim和yshavit。为什么每个人都投反对票?至少有人能告诉我我做错了什么吗?好的Jim,我在阅读Kaushal的答案后看了Javadoc,我现在明白了;我应该直接到“构造函数”部分来查找我的信息。坦白说,如果没有Kaushal的帮助,我是不可能知道这一点的。我之前做的(甚至在发布这个问题之前)是对Javadoc进行Ctrl+F搜索以查找“整数”,这当然是无效的,因为作为初学者,我没有想到必须首先将整数转换为字符串(即查看“构造函数”)。不要通过
string
int
转换为
biginger
,使用
biginger.valueOf(long)
谢谢你的回答,Kaushal;但是,你能解释一下“biginger converted=new biginger(Integer.toString(x))”这一行是什么吗是吗?但他要求把BigInteger除以Integer,所以我假设他有整数而不是long顺便说一句,不是我否决了你的答案;我甚至没有特权yetYes,Kaushal是对的;我的意思是整数而不是long。谢谢这个答案。在此之前我没有意识到整数是long。但Kaushal的答案是v这也非常有帮助,因为它使我意识到需要查看Javadoc中的“构造函数”部分。@ANteelauhFarnese更新的答案…int可以隐式地“加宽”长…从小到大总是这样,例如byte=>short,short=>int,int=>long。谢谢;这是否意味着int在技术上不被认为是长的,但可以被程序视为长的?@ANteelauhFarnese