실수 타입

실수 타입 (Real types)

연산에 부동소수점이 필요할 때 Free Pascal이 어떤 실수 타입을 제공하는지, 그리고 그 타입들이 어떤 범위와 정밀도를 갖는지 이해하는 것은 정밀도 문제를 피하는 첫 단계예요.

출처: Free Pascal Reference — Real types

본문

Free Pascal은 모든 부동소수점 계산에 수학 보조 프로세서(또는 에뮬레이션)를 사용해요. 네이티브 Real 타입은 프로세서에 따라 다르지만, Single이거나 Double이에요. IEEE 부동소수점 타입만 지원되며, 이것들은 대상 프로세서와 에뮬레이션 옵션에 따라 달라져요. 진짜 Turbo Pascal 호환 타입은 표 3.5에 나열돼 있어요.

표 3.5: 지원되는 Real 타입

Type Range Significant digits Size
Real platform dependant ??? 4 or 8
Single 1.5E-45 .. 3.4E38 7~8 4
Double 5.0E-324 .. 1.7E308 15~16 8
Extended 1.9E-4932 .. 1.1E4932 19~20 10
Comp -2E64+1 .. 2E63-1 19~20 8
Currency -922337203685477.5808 .. 922337203685477.5807 19~20 8

Comp 타입은 사실상 64비트 정수이며 모든 대상 플랫폼에서 사용할 수 있는 것은 아니에요. 지원되는 타입에 대한 자세한 내용은 Programmers Guide를 참고하세요.

currency 타입은 고정 소수점 실수 데이터 타입이에요. 내부적으로 64비트 정수 타입으로 사용되며(10000의 인자로 자동 스케일링), 이는 반올림 오차를 최소화해요. 이 타입은 주의해서 사용해야 해요. 곱셈 등을 사용하는 표현식에서 중간 결과가 currency 범위를 벗어나면 표현식 평가가 (정밀도를 잃으며) 잘못될 수 있어요.

모든 실수 타입이 모든 플랫폼에서 사용 가능한 것은 아니라는 점에 주의하세요.

  • single 타입은 부동소수점 지원이 있는 모든 플랫폼에서 사용 가능함이 보장되는 유일한 타입이에요(예: AVR에는 없음).
  • double 타입은 보조 프로세서가 있는 모든 플랫폼에서 사용 가능해요.
  • extended 타입은 Windows 64비트 플랫폼을 제외한 모든 Intel x86 프로세서에서 사용 가능해요.

가용성에 대한 더 자세한 내용은 Programmers Guide를 확인하세요.

더 알아보기

  • 정수 계열의 서수 타입은 "서수 타입(Ordinal types)" 문서를 참고해요.
  • 부동소수점 계산 모드와 에뮬레이션에 대한 상세 내용은 Free Pascal Programmer's Guide를 확인해요.