Chuyển đổi từ Integer, sang BigInteger


129

Tôi đã tự hỏi nếu có bất kỳ cách nào để chuyển đổi một loại kiểu Integer, sang BigInteger. Tôi đã thử đánh máy biến số Integer, nhưng tôi gặp một lỗi cho biết loại không thể chuyển đổi.


12
bạn đã hỏi một vài câu hỏi về BigInteger sẽ được giải quyết khá dễ dàng bằng cách đọc Javadocs. Theo liên kết trong câu trả lời của tôi và kiểm tra tất cả các phương thức và hàm tạo mà BigInteger có.
jjnguy

Câu trả lời:


239

Phương thức bạn muốn là BigInteger # valueOf (val dài) .

Ví dụ,

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

Tạo một chuỗi đầu tiên là không cần thiết và không mong muốn.


2
@Mich, không. Nếu nó là một số nguyên, Java sẽ tự động mở rộng nó cho bạn. (OP nói rằng anh ta có một Số nguyên)
jjnguy

Điều đó sẽ làm việc như là tốt. Trên một số nguyên, intValue () sẽ không tràn, do đó, lệnh gọi valueOf sẽ đơn giản mở rộng int thành một khoảng dài. Không có sự khác biệt đáng chú ý giữa việc sử dụng longValue () và intValue () trong ví dụ này, nhưng nếu anh ấy bắt đầu với Long, anh ấy sẽ muốn sử dụng longValue ().
jbindel

2
Amar, điều đó sẽ tương tự như các cách tiếp cận dựa trên Chuỗi khác. Điều quan trọng cần tránh ở đây là bất kỳ thế hệ hoặc phân tích chuỗi nào.
jbindel

1
Không phải là sử dụng Chuỗi sẽ cho bạn câu trả lời sai, nhưng đó là công việc làm thêm cho máy tính. Ví dụ: bạn có thể đi đến nhà bên cạnh bằng cách đi bên cạnh hoặc bạn có thể đi theo hướng ngược lại và đi gần như tất cả các con đường trên toàn cầu. Bạn vẫn sẽ đến đó và nếu bạn có một chiếc máy bay tên lửa nhanh, bạn có thể không nhận thấy thời gian cần thiết, nhưng điều đó thật lãng phí, và nó sẽ mất nhiều thời gian hơn.
jbindel

1
Và những gì về trường hợp khi myInteger là null thì nó sẽ là NPE.
Wizzard

-4

Bạn có thể làm theo cách này:

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

5
Bạn có thể, nhưng tại sao bạn? Một giải pháp tốt hơn nhiều được đề xuất trong câu trả lời đã được chấp nhận.
Colin

Việc tạo các chuỗi để thực hiện phép toán số nguyên làm lãng phí nhiều chu kỳ CPU hơn bạn sẽ quan tâm.
jbindel
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.