10
votes

Java / Scala BigInteger collé

J'ai un problème avec le Java BigInteger Code> Classe: Je ne peux pas coller une grande valeur dans BigInteger code>. Par exemple, disons que je veux affecter un biginteger code> à ce numéro: xxx pré>

Je ne peux pas l'attribuer directement, car le compilateur pense que c'est un entier: P >

val bi = 26525285981219105863630848482795 //compile error


2 commentaires

Qu'entendez-vous par "Le compilateur pense que c'est un entier" . Comment le compilateur peut-il penser qu'un numéro à 30 chiffres est un entier ?


@Oxbow - Je pense que Michael signifiait que le compilateur Scala pense que le littéral est un entier, puis se plaint que "nombre entier trop grand". Essayez val A = 26525285981219105863630848482795 dans l'interpréteur Scala :).


3 Réponses :


5
votes

Cela devrait fonctionner:

BigInteger bigInt = new BigInteger("26525285981219105863630848482795");


0 commentaires

17
votes

Réponse est correcte d'une perspective Java, mais à Scala vous peut faire plus avec scala.bigint code> S que ce que vous pouvez faire avec java.math.biginteger code> s.

Par exemple: P>

scala> val x = BigInt(12)
x: BigInt = 12

scala> val y = BigInt(12331453151315353L)
y: BigInt = 12331453151315353

scala> val z = BigInt("12124120474210912741099712094127124112432")
z: BigInt = 12124120474210912741099712094127124112432

scala> x + y * z
res1: BigInt = 149508023628635151923723925873960750738836935643459768508


0 commentaires

1
votes

Démarrer dans scala 3 code> et améliorations apportées à littéraux numériques , vous pouvez utiliser le formulaire suivant:

val big: BigInt = 26_525_285_981_219_105_863_630_848_482_795
// 26525285981219105863630848482795


0 commentaires