整数からBigIntegerへの変換


129

Integer型の変数をBigIntegerに変換する方法があるかどうか疑問に思っていました。Integer変数を型キャストしようとしましたが、変換できない型を示すエラーが発生します。


12
あなたはBigIntegerについていくつかの質問をしましたが、Javadocsを読むことでかなり簡単に解決できます。私の回答のリンクをたどって、BigIntegerが持っているすべてのメソッドとコンストラクターをチェックしてください。
jjnguy

回答:


239

必要なメソッドはBigInteger#valueOf(long val)です。

例えば、

BigInteger bi = BigInteger.valueOf(myInteger.intValue());

最初に文字列を作成することは不要であり、望ましくありません。


2
@Mich、いいえ。整数の場合、Javaが自動的に展開します。(OPは整数を持っていると言っています)
jjnguy

それも同様に機能します。Integerでは、intValue()はオーバーフローしないため、valueOfの呼び出しは単にintをlongに拡大します。この例では、longValue()とintValue()を使用しても目立った違いはありませんが、Longで始めた場合は、longValue()を使用することになります。
jbindel

2
Amar、それは他の文字列ベースのアプローチに似ています。ここで避けるべき重要なことは、文字列の生成または解析です。
jbindel 2013

1
文字列を使用すると間違った答えが得られるわけではありませんが、コンピュータにとって余分な作業になります。たとえば、隣の家を歩いて隣の家に行くことも、反対方向に行って地球のほぼ全域を移動することもできます。あなたはまだそこに着くでしょう、そしてあなたが速いロケット飛行機を持っているならば、あなたはそれがかかった時間に気づかないかもしれませんが、それは無駄であり、それはしばらく時間がかかります。
jbindel 2013

1
また、myIntegerがnullの場合はNPEになります。
ウィザード

-4

あなたはこの方法で行うことができます:

    Integer i = 1;
    new BigInteger("" + i);

5
できますが、なぜでしょうか。すでに受け入れられている回答では、はるかに優れたソリューションが提案されています。
コリン

整数演算を実行する文字列を作成すると、数えるよりも多くのCPUサイクルが無駄になります。
jbindel 2018年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.