2013-07-31 13 views
9

Czy mimo to można przekonwertować wartość z double na BigInteger?czy mimo to można przekonwertować z Double do BigInteger?

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

Próbuję rzucić, ale to nie zadziałało.

+0

Zgaduję, że nie zrozumieć różnicę między liczbą całkowitą i A (zmiennoprzecinkowych) dwukrotnie. –

+0

Lub między konwersją a rzutowaniem. – EJP

+1

Być może on chce BigIntegera zawierającego 64654679846513164 –

Odpowiedz

17

BigInteger służy do przechowywania arbitralnych liczb całkowitych, a nie dziesiętnych. Możesz użyć klasy BigDecimal, aby zatrzymać podwójne.

BigDecimal k = BigDecimal.valueOf(doublevalue); 

Ogólnie rzecz biorąc, nie można wpisywać prymitywu Java w innej klasie. Wyjątki, o których wiem, to klasy rozszerzające Number, takie jak klasy opakowujące Long i Integer, które umożliwiają rzutowanie wartości typu int na liczbę całkowitą i tak dalej.

+0

. Pomoże to OP, jeśli wyjaśnisz, dlaczego rzutowanie typu nie działa. –

+1

@LuiggiMendoza Dodałem myśl o castingu, ale nie jestem pewien, czy odpowie na problem OP, ponieważ wydaje się być zdezorientowany co do bardziej ogólnych rzeczy. Tylko moja opinia. – Kon

-1

yo nie można rzucić Double do BigInteger, ponieważ te dwie klasy są klasami rówieśniczymi rozciągającymi się od klasy Number. możesz zostać przeniesiony do Numeru, a następnie możesz dokonać dalszej konwersji.

29

można przekonwertować dwukrotnie w BigDecimal i następnie w BigInteger:

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

Jeśli rzeczywiście chcesz wziąć tylko integralną część podwójnej i zapisać go w BigInteger, to z pewnością najlepsza odpowiedź? –

Powiązane problemy