การแปลงจาก Integer เป็น BigInteger


131

ฉันสงสัยว่ามีวิธีใดในการแปลงตัวแปรประเภท Integer เป็น BigInteger ฉันพยายามพิมพ์ตัวแปรจำนวนเต็ม แต่ได้รับข้อผิดพลาดที่ระบุว่าประเภทที่ไม่สามารถแปลงกลับได้


12
คุณได้ถามคำถามสองสามข้อเกี่ยวกับ BigInteger ซึ่งจะแก้ไขได้ค่อนข้างง่ายโดยการอ่าน Javadocs ไปที่ลิงค์ในคำตอบของฉันและตรวจสอบวิธีการและตัวสร้างทั้งหมดที่ BigInteger มี
jjnguy

คำตอบ:


240

วิธีการที่คุณต้องการคือBigInteger # valueOf (Val ยาว)

เช่น,

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

การสร้างสตริงก่อนเป็นสิ่งที่ไม่จำเป็นและไม่เป็นที่ต้องการ


2
@ มิชไม่มี. หากเป็นจำนวนเต็ม Java จะขยายให้คุณโดยอัตโนมัติ (OP บอกว่าเขามีจำนวนเต็ม)
jjnguy

นั่นก็ใช้ได้ผลเช่นกัน ในจำนวนเต็ม intValue () จะไม่ล้นดังนั้นการเรียกใช้ valueOf จะขยาย int เป็น long ไม่มีความแตกต่างที่ชัดเจนระหว่างการใช้ longValue () และ intValue () ในตัวอย่างนี้ แต่ถ้าเขาเริ่มต้นด้วย Long เขาต้องการใช้ longValue ()
jbindel

2
Amar ซึ่งจะคล้ายกับวิธีการอื่น ๆ ที่ใช้สตริง สิ่งสำคัญที่ควรหลีกเลี่ยงที่นี่คือการสร้างหรือการแยกวิเคราะห์สตริง
jbindel

1
ไม่ใช่ว่าการใช้ String จะทำให้คุณได้คำตอบที่ผิด แต่เป็นงานพิเศษสำหรับคอมพิวเตอร์ ตัวอย่างเช่นคุณสามารถไปบ้านข้างๆโดยเดินถัดไปหรือคุณอาจไปในทิศทางตรงกันข้ามและไปได้เกือบทั่วโลก คุณยังคงไปถึงที่นั่นและถ้าคุณมีเครื่องบินจรวดเร็วคุณอาจไม่สังเกตเห็นเวลาที่ใช้ไป แต่มันสิ้นเปลืองและใช้เวลานานกว่านั้น
jbindel

1
แล้วกรณีที่ myInteger เป็นโมฆะมันจะเป็น NPE
Wizzard

-4

คุณสามารถทำได้ด้วยวิธีนี้:

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

5
คุณทำได้ แต่ทำไมคุณล่ะ? มีการเสนอทางออกที่ดีกว่ามากในคำตอบที่ยอมรับแล้ว
Colin

การสร้างสตริงเพื่อคำนวณเลขจำนวนเต็มทำให้สิ้นเปลืองรอบ CPU มากกว่าที่คุณจะนับ
jbindel
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.