문제

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를 확인하고 싶을 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top