Java / Scala BigInteger collage
-
18-09-2019 - |
Question
J'ai un problème avec la classe Java BigInteger: Je ne peux pas coller une grande valeur dans BigInteger. Par exemple, disons que je veux attribuer un BigInteger à ce numéro:
26525285981219105863630848482795
Je ne peux pas l'affecter directement, parce que le compilateur pense qu'il est un entier:
val bi = 26525285981219105863630848482795 //compile error
Mais je veux que ce soit un BigInteger
. Est-il possible de pouvoir coller directement ce dans le code source? S'il n'y a pas de telle sorte, alors est-il un moyen de Scala, qui a beaucoup plus facile à utiliser la classe BigInt
? Merci pour l'aide.
La solution
répondre est correcte d'un point de vue Java, mais Scala vous peut faire plus avec scala.BigInt
s que ce que vous pouvez faire avec java.math.BigInteger
s.
Par exemple:
scala> val a = new BigInteger("26525285981219105863630848482795");
a: java.math.BigInteger = 26525285981219105863630848482795
scala> a + a
:7: error: type mismatch;
found : java.math.BigInteger
required: String
a + a
La façon canonique à Scala instancier une classe est d'utiliser une usine située dans la
Autres conseils
Cela devrait fonctionner:
BigInteger bigInt = new BigInteger("26525285981219105863630848482795");
BigInteger lit les chaînes et les parse dans le bon numéro. En raison de cela, vous voulez vérifier java.text.NumberFormat.