从 Java 的角度来看, rtperson 的答案是正确的,但是在 Scala 中,您可以使用 s 做的事情scala.BigInt
比使用 s可以做的更多java.math.BigInteger
。
例如:
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 中实例化类的规范方法是使用位于
伴随对象中的工厂。当您在 Scala 中编写 Foo(args) 时,它被转换为 Foo.apply(args),其中 Foo 是一个单例对象 - 伴生对象。因此,要找到构造BigInt
s 的方法,您可以查看BigInt
Scala 库中的对象,特别是其apply
构造。
因此,构造 an 的三种方法BigInt
是:传递它 an Int
, aLong
或 aString
进行解析。例子:
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
请注意,您可以使用 a 进行看起来自然的算术运算BigInt
,而使用 a 是不可能的BigInteger
!