십진수 데이터 유형
Decimal data type일부 프로그래밍 언어(또는 이들을 위한 컴파일러)는 반올림 없이 0.3과 -1.17과 같은 반복되지 않는 소수점 분율을 나타내기 위해 내장(기본) 또는 라이브러리 십진수 데이터 유형을 제공하고 그에 대한 산술 작업을 수행한다.예는 다음과 같다.decimal.Decimal
Python 유형 및 다른 언어에서 제공하는 유사한 유형.
이론적 근거
분수 번호는 대부분의 프로그래밍 언어에서 부동 소수점 또는 고정 소수점 숫자로 지원된다.그러나 그러한 표현은 전형적으로 분모를 2의 힘으로 제한한다.대부분의 소수점 분수(또는 일반적으로 대부분의 분수)는 정확히 2의 검정력인 분모를 가진 분수로 나타낼 수 없다.예를 들어, 단순 소수점 0.3(3/10)은 5404319552844595/18014398509481984(0.29999999999998889769...)로 나타낼 수 있다.이러한 부정확함은 경험 많은 프로그래머들에게 친숙한 많은 문제들을 야기시킨다.예를 들어, 표현은0.1 * 7 == 0.7
소수점 표현의 부정확성으로 인해 일부 시스템에서는 반직관적으로 거짓으로 평가할 수 있다.
모든 소수점 분수는 분수여서 이를 정확하게 나타내기 위해 합리적인 데이터 유형을 사용할 수 있지만, 많은 상황에서 비반복 소수점 분율(분모가 10인 분모)만 고려하는 것이 더 편리할 수 있다.예를 들어, 전세계 통화의 부분 단위는 대부분 10의 힘인 분모를 기초로 한다.또한 과학에서 대부분의 분수 측정은 다른 분모 계통의 분수와는 달리 소수 분수로 보고된다.
십진수 데이터 유형은 부동 소수점 번호 또는 고정 소수점 번호로 구현될 수 있다.고정점의 경우 분모는 고정된 힘인 10으로 설정될 것이다.부동 소수점의 경우, 가변 지수는 숫자의 맨티사가 곱한 10의 힘을 나타낼 것이다.
합리적인 데이터 유형을 지원하는 언어는 일반적으로 기본 2 부동 소수점 대신 두 정수에서 그러한 값을 구성할 수 있는데, 이는 후자가 야기할 정확성의 상실로 인한 것이다.일반적으로 기본 산술 연산('+', '-', '×', '/', 정수 검정력) 및 비교('=', '<', ''>', '≤'')는 해당 연산자에 대해 작용하도록 확장된다.이러한 작업은 컴파일러에 의해 일련의 정수 기계 명령 또는 라이브러리 호출로 변환될 수 있다.지원은 포맷, 정수 또는 부동소수점 값으로 반올림 등의 다른 작업으로도 확장될 수 있다.그 예로는 123.456이 있다.
표준 형식
IEEE 754는 서로 다른 정밀도의 세 가지 표준 부동 소수점 데이터 유형을 지정한다.
언어 지원
- C#에는 128비트로 구성된 내장 데이터 유형 '십진수'가 있어 28-29개의 유의한 숫자가 나온다.대략적인 범위는 (-7.9 x 10^28 ~ 7.9 x 10^28) / (10^(0 ~ 28)[1]이다.
- Python 2.4를 시작으로 파이썬의 표준 라이브러리에는모듈 십진수의 십진수 클래스.[2]
- 루비의 표준 도서관은 모듈 빅십진수에 빅십진수 클래스를 포함하고 있다.
- Java의 표준 라이브러리에는 Java.math가 포함되어 있다.BigDecimal 클래스.
- 목표-C에서 코코아 및 GNUstep API는 NSDecimalNumber 클래스와 NSDecimal C 데이터 유형을 제공하며, 사티사의 길이는 최대 38자리이고 지수는 -128~127자리인 소수점을 나타낸다.
- 일부 IBM 시스템과 SQL 시스템은 적어도 두 개의 더 큰 형식을 가진 DECFLOAT 형식을 지원한다.[3]
- ABAP의 새로운 DECFLOAT 데이터 유형에는 10진수64(DECFLOAT16)와 10진수128(DECFLOAT34) 형식이 포함되어 있다.[4]
- PL/I는 기본적으로 고정점 및 부동점 소수점 데이터를 모두 지원한다.
- GNU 컴파일러 컬렉션(gcc)은 10진수 부동액을 확장형으로 지원한다.[5]
참고 항목
참조
- ^ http://msdn.microsoft.com/en-us/library/364x0z75.aspx
- ^ "Decimal — Decimal fixed point and floating point arithmetic — Python 3.10.0 documentation".
- ^ "Data management".
- ^ "Archived copy". Archived from the original on 2012-08-09. Retrieved 2012-07-28.
{{cite web}}
: CS1 maint: 타이틀로 보관된 사본(링크) - ^ "GCC Manual". 6.13 Decimal Floating Types.