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