2010-10-07 16 views
106

Tamsayı türünde bir değişkeni BigInteger'e dönüştürmenin herhangi bir yolu olup olmadığını merak ediyordum. Tamsayı değişkeni typecasting denedim, ama invertivible türü diyor bir hata alıyorum.Tam Sayıdan BigInteger'e dönüştürme

+9

. Cevabımdaki bağlantıyı takip edin ve BigInteger'in sahip olduğu tüm metodları ve kurucuları inceleyin. – jjnguy

cevap

205

yöntem BigInteger#valueOf(long val) olduğunu. bir String yapma

Ör

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

ilk gereksiz ve arzu edilmeyen bir durumdur.

+2

@Mich, no. Eğer bir tamsayı ise, Java sizin için otomatik olarak genişletecektir. (OP bir Tamsayı olduğunu söylüyor) – jjnguy

+0

Bu da işe yarayacaktı. Bir Tamsayı üzerinde intValue() taşmayacak, bu nedenle valueOf çağrısı int uzunluğunu genişletecektir. Bu örnekte longValue() ve intValue() kullanımı arasında fark edilebilir bir fark yoktur, ancak bir Long ile başladıysa, longValue() kullanmak ister. – jbindel

+0

Ayrıca 'intValue() 'işlevinin bırakılmasının güzel görünmesi ve Java'nın modern sürümlerinin" Tamsayı "nı daha sonra kullanılmakta olan bir" int "haline otomatik olarak çıkarması önerilmiştir. Otomatik kutudan çıkarma sadece bu detayı sizden gizler. – jbindel

-6

Öyle gibi BigInteger den String yapıcısını kullanabilirsiniz: İstediğiniz

int regularInt = 321312; // some value 
BigInteger bigInt = new BigInteger(String.valueOf(regularInt)); 
0

Bu şekilde her yapabilirsiniz: Eğer Javadocs okuyarak oldukça kolay çözülmüş olur BigInteger ilgili bir kaç soru sordum

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

Yapabilirsin, ama neden yapardın? Zaten kabul edilen cevapta çok daha iyi bir çözüm önerilmektedir. –

+0

Tamsayı matematik yapmak için dizeler yapmak, saymayacağınızdan daha fazla CPU döngüsü harcar. – jbindel

İlgili konular