2013-07-31 11 views
9

Gibt es trotzdem eine Konvertierung von double Wert zu BigInteger?gibt es sowieso um von Double zu BigInteger zu konvertieren?

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

Ich versuche, es zu werfen, aber es hat nicht funktioniert.

+0

ich Ihnen raten, nicht verstehen den Unterschied zwischen einer ganzen Zahl und einem (floating point) zu verdoppeln. –

+0

Oder zwischen Konvertierung und Casting. – EJP

+1

Vielleicht möchte er einen BigInteger mit 64654679846513164 –

Antwort

17

Der BigInteger ist für die Speicherung von beliebigen Ganzzahlen, nicht von Dezimalzahlen, vorgesehen. Sie können die Klasse BigDecimal verwenden, um ein Double zu halten.

Im Allgemeinen können Sie nicht ein Java-Primitiv in eine andere Klasse umwandeln. Die Ausnahmen, die ich kenne, sind die Klassen Number, wie die und Integer Wrapper-Klassen, mit denen Sie einen Int-Wert in eine Ganzzahl umwandeln können, und so weiter.

+0

Es würde helfen, OP, wenn Sie erklären, warum Typ Casting nicht funktioniert hat. –

+1

@LuiggiMendoza Ich habe einen Gedanken über das Casting hinzugefügt, bin mir aber nicht sicher, ob es auf OPs Problem antworten wird, da er über allgemeinere Dinge verwirrt zu sein scheint. Nur meine Meinung. – Kon

-1

Sie können Double nicht in BigInteger umwandeln, da diese beiden Klassen Peer-Klassen sind, die von der Number-Klasse ausgehen. Sie können in Number umgewandelt werden und dann weitere Conversions durchführen.

29

Sie können die Doppel in eine BigDecimal und dann in eine BigInteger konvertieren:

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

Wenn Sie eigentlich nur den integralen Teil des Double nehmen und in einem BigInteger speichern wollen, ist dies sicherlich die beste Antwort? –

Verwandte Themen