Java/Scala Biginteger Pasting
-
18-09-2019 - |
문제
Java Biginteger 클래스에 문제가 있습니다. 큰 가치를 Biginteger에 붙여 넣을 수 없습니다. 예를 들어, BigInteger를이 숫자에 할당하고 싶다고 가정 해 봅시다.
26525285981219105863630848482795
컴파일러가 정수라고 생각하기 때문에 직접 할당 할 수 없습니다.
val bi = 26525285981219105863630848482795 //compile error
그러나 나는 그것이 A가되기를 원합니다 BigInteger
. 이것을 소스 코드에 직접 붙여 넣을 수있는 방법이 있습니까? 그런 방법이 없다면 스칼라에는 사용하기가 훨씬 쉽습니다. BigInt
수업? 도와 주셔서 감사합니다.
해결책
rtperson '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에서 foo (args)를 쓸 때 이것은 foo.apply (args)로 번역됩니다. 여기서 foo는 싱글 톤 객체 - 동반자 객체입니다. 따라서 건축 방법을 찾기 위해 BigInt
당신은 당신이 볼 수 있습니다 BigInt
Scala Library의 개체, 특히 그 apply
건설하다.
따라서 세 가지 방법을 구성합니다 BigInt
다음과 같습니다. 전달합니다 Int
, ㅏ Long
또는 a 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
!
다른 팁
이것은 작동해야합니다 :
BigInteger bigInt = new BigInteger("26525285981219105863630848482795");
Biginteger는 문자열을 읽고 올바른 숫자로 구문 분석합니다. 이 때문에 java.text.numberformat를 확인하고 싶을 것입니다.