임의 정밀도

나루 위키
둘러보기로 가기 검색하러 가기

자연수 타입, 정수 타입, 유리수 타입은 메모리가 허락하는 한 임의 정밀도의 값을 담을 수 있다.

(1 << 100) println() --> 1267650600228229401496703205376
(3.141592653589793238462643383279 * 2) println() --> 6.283185307179586476925286766558

이러한 값들을 연산하는 과정에서 OutOfMemory 실패가 발생할 수 있다. 또는, 메모리 할당은 성공하더라도 연산에 과도한 시간을 써서 캡슐에 의해 TimedOut 실패가 발생할 수 있다. 따라서 나루 구현체는 임의 정밀도 연산 중간에 안전하게 멈출 수 있는 방법을 제공해야 한다.

(1 << (1 << 100)) println() -- 실패: OutOfMemory

일부 연산은 근본적으로 정확한 계산이 불가능할 수 있다(이를테면 sqrt 같은 것들). 이 경우 정밀도가 명시적인 인자로 넘겨진다.