2017-04-08 4 views
2

entrée:Comment gérer un grand nombre qui est plus grand que BigInteger dans Java?

BigInteger l = BigInteger.valueOf(111111111111111110); 

message d'erreur du compilateur

nombre entier trop grand

Mon objectif est de diminuer de façon continue du grand nombre donné jusqu'à une certaine valeur (dites K).

Comment puis-je y parvenir?

+0

Comment l'entrée est-elle convertie en BigInteger? – kennytm

+0

Que voulez-vous dire par "plus grand que BigInteger"? –

+4

"Comment gérer un grand nombre qui est plus grand que BigInteger dans Java?" la seule limite à BigInteger est votre RAM. il n'y a donc aucune chance que votre numéro soit plus grand que ce qu'un BigInteger peut contenir. –

Répondre

7

nombre entier trop grand

la raison pour laquelle il est donner une erreur est parce que le type que vous avez passé dans l'argument de la valueOf(...) est un int (ce qui est le type par défaut, sauf si vous spécifiez sinon) qui a une limite, et vous avez dépassé cette limite d'où l'erreur.

BigInteger l = BigInteger.valueOf(111111111111111110); // argument is int, so it will give a compiler error 

utilisez plutôt un argument long.

BigInteger value = BigInteger.valueOf(111111111111111110L); 

ou d'utiliser un argument string.

BigInteger value = new BigInteger("111111111111111110"); 
+4

Veuillez utiliser 'L' pour représenter le suffixe' long'. 'L' est plus facile à lire que' l' qui peut être interprété comme '1' avec quelques polices. – Pshemo

+0

@Pshemo chose sûre. :) –