2009-12-21 16 views

risposta

39

L'esempio concreto può essere memorizzato in long (o java.lang.Long se necessario).

Se in qualsiasi momento avete bisogno di numeri più grandi, si può provare java.math.BigInteger (se intero), o java.math.BigDecimal (se decimale)

+9

Queste classi sono molto lenti, e dovrebbe essere usato solo se si ha realmente bisogno di un sacco di cifre. 10 cifre possono essere facilmente memorizzate in un "lungo". Tuttavia, se hai bisogno di 50 a 5000 cifre, queste due classi sono il modo migliore per farlo. – Karl

+1

abbastanza corretto .. Ho pensato istintivamente che ha provato l'ovvio, e non ci è riuscito. Modificato la mia risposta in modo che sia corretta. – Bozho

28

È possibile memorizzare questo in un long. A long è possibile memorizzare un valore da -9223372036854775808 a 9223372036854775807.

+0

cletus: punto preso, modificato. –

7

Un primitivo lungo o il suo wrapper java.lang.Long può anche memorizzare dieci cifre.

+1

+1 Un contenitore lungo può memorizzare 18-19 cifre con precisione assoluta. A meno che l'OP indichi che hanno bisogno di più di questo, una lunga è una scelta molto migliore di BigInteger. – cletus

3

è possibile utilizzare long o double.

+0

Un doppio? Se l'esempio dell'OP di "9999999999" è indicativo, non è necessario introdurre imprecisioni in virgola mobile per un numero intero. –

+0

yup bene la tua destra, ma gli stavo solo mostrando che possiamo usare anche queste cose. Dipende davvero dalle tue esigenze aziendali. – akellakarthik

25

In aggiunta a tutte le altre risposte, mi piacerebbe notare che se si desidera scrivere quel numero come letterale nel codice Java, è necessario aggiungere un L o l per dire al compilatore che si tratta di un long costante:

long l1 = 9999999999; // this won't compile 
long l2 = 9999999999L; // this will work 
0

È possibile memorizzare creando un oggetto che detengono un numero valore stringa per memorizzare in una lista di array. per esempio: BigInt objt = new BigInt("999999999999999999999999999999999999999999999999999");

objt è stato creato dal costruttore della classe BigInt. All'interno della classe sembra.

BigInt{ 

ArrayList<Integer> myNumber = new ArrayList <Integer>();   

public BigInt(){} 

public BigInt(String number){ for(int i; i<number.length; i++){ myNumber.add(number.indexOf(i)); } } 

} 
+1

Questo è completamente irrilevante. Non ha chiesto array o liste o numeri con 52 cifre decimali. Non viene nemmeno compilato. – EJP

6

Utilizzare il tipo di dati BigInt con le sue operazioni implicite. Il vantaggio è che non darà risposte in rappresentazioni esponenziali. Darà risultato pieno lunghezza

Ecco un esempio di addizione

 BigInteger big1 = new BigInteger("1234567856656567242177779"); 
     BigInteger big2 = new BigInteger("12345565678566567131275737372777569"); 
     BigInteger bigSum = big1.add(big2); 
     System.out.println(bigSum); 
+0

Benvenuti in Stack Overflow. se hai trovato una stessa domanda ovunque, contrassegna quella domanda come duplicata invece di dare di nuovo la stessa soluzione. oppure puoi fornire un link della tua risposta pubblicato prima. – Shell