2013-07-31 35 views
9

Có cách nào để chuyển đổi từ double giá trị thành BigInteger?có cách nào để chuyển đổi từ Double sang BigInteger?

double doubleValue = 64654679846513164.2; 
BigInteger bigInteger = (BigInteger) doubleValue; 

Tôi cố gắng truyền nhưng không hoạt động.

+0

Tôi đoán bạn không hiểu sự khác biệt giữa một số nguyên và một (floating point) đôi. –

+0

Hoặc giữa chuyển đổi và truyền. – EJP

+1

Có lẽ anh ta muốn một BigInteger có chứa 64654679846513164 –

Trả lời

17

BigInteger được tạo để giữ số nguyên chính xác tùy ý, không phải số thập phân. Bạn có thể sử dụng lớp BigDecimal để tăng gấp đôi.

BigDecimal k = BigDecimal.valueOf(doublevalue); 

Nói chung, bạn không thể nhập phân đoạn nguyên thủy Java vào một lớp khác. Các ngoại lệ mà tôi biết là các lớp mở rộng Number, chẳng hạn như các lớp bao bọc LongInteger, cho phép bạn truyền một giá trị int vào một số nguyên, v.v.

+0

Nó sẽ giúp OP nếu bạn giải thích tại sao loại đúc không hoạt động. –

+1

@LuiggiMendoza Tôi đã thêm một suy nghĩ về việc đúc, nhưng không chắc chắn nếu nó sẽ trả lời vấn đề của OP kể từ khi ông có vẻ bối rối về những điều chung chung hơn. Chỉ là ý kiến ​​của tôi. – Kon

-1

yo không thể truyền Double to BigInteger, vì hai lớp này là các lớp ngang hàng mở rộng từ lớp Số. bạn có thể chuyển sang Số và sau đó có thể thực hiện chuyển đổi thêm.

29

Bạn có thể chuyển đổi các đôi vào một BigDecimalsau đó thành một BigInteger:

BigInteger k = BigDecimal.valueOf(doublevalue).toBigInteger(); 
+2

Nếu bạn thực sự muốn chỉ là một phần không thể thiếu của đôi và lưu trữ nó trong một BigInteger, điều này chắc chắn là câu trả lời tốt nhất? –

Các vấn đề liên quan