我有一个
Java BigInteger类的问题:我不能将一个大的值粘贴到BigInteger.例如,假设我要为这个数字分配一个BigInteger:
26525285981219105863630848482795
我不能直接分配它,因为编译器认为它是一个整数:
val bi = 26525285981219105863630848482795 //compile error
但我希望它成为一个BigInteger.有没有办法直接粘贴到源代码?如果没有这样的方法,那么Scala中有没有一种方法,它有更容易使用BigInt类?谢谢您的帮助.
解决方法
rtperson的
answer从Java的角度来说是正确的,但是在Scala中,您可以使用与java.math.BigIntegers可以做的更多的比较.
例如:
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
Scala中规范课程的典型方法是使用位于该课程的工厂
companion object.当您在Scala中写入Foo(args)时,将其转换为Foo.apply(args),其中Foo是单例对象 – 伴随对象.因此,为了找到构建BigInts的方法,您可以查看Scala库中的BigInt对象,特别是其应用构造.
因此,构建BigInt的三种方式是:传递一个Int,一个Long或一个String来进行解析.例:
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
请注意,您可以使用BigInt进行自然的算术运算,这对BigInteger是不可能的!