Octave 수치 데이터형
Octave 수치 데이터형 (Numeric Data Types)
수치 상수는 스칼라, 벡터, 행렬이 될 수 있고, 복소수 값을 담을 수도 있어요.
출처: 문서
본문
가장 단순한 형태의 수치 상수인 스칼라는 숫자 하나예요. 기본적으로 Octave의 숫자는 IEEE 754 배정밀도(binary64) 부동소수점 형식으로 표현돼요(복소수 상수는 binary64 값 두 개의 쌍으로 저장돼요). 하지만 Integer Data Types에서 설명하는 것처럼 실제 정수를 나타내는 것도 가능해요.
수치 상수가 실수 정수라면 10진수, 16진수, 2진수 표기로 정의할 수 있어요. 중요한 차이점은, 10진수 상수는 binary64 값으로 저장되지만 16진수나 2진수 표기를 쓰면 해당 숫자를 담기에 충분한 저장 클래스의 실제 정수가 된다는 점이에요. 16진수 표기는 0x 또는 0X로 시작하고, 2진수 표기는 0b 또는 0B로 시작해요. 그 외에는 10진수 표기로 간주해요. 그 결과 0b는 16진수가 아니라, 사실상 유효한 숫자가 전혀 아니에요.
가독성을 위해 숫자 자릿수는 밑줄 구분자 _로 나눌 수 있는데, Octave 인터프리터는 이를 무시해요. 다음은 모두 같은 값을 나타내는 실수 정수 상수 예시예요.
42 # decimal notation, binary64
0x2A # hexadecimal notation
0b101010 # binary notation
0b10_1010 # underscore notation
round (42.1) # also binary64
10진수 표기에서는 수치 상수를 소수로 나타내거나 과학적(지수) 표기로도 나타낼 수 있어요. 하지만 이건 16진수나 2진수 표기에서는 불가능해요. 다음 예시의 수치 상수들은 모두 같은 값을 나타내요.
.105
1.05e-1
.00105e+2
대부분의 프로그래밍 언어와 달리, 복소수 상수는 실수부와 허수부의 합으로 나타내요. 허수부는 실수 수치 상수 바로 뒤에 복소수 표시자(i, j, I, J — sqrt (-1) 을 나타냄)를 붙여 표기해요. 수치 상수와 복소수 표시자 사이에 공백이 있으면 안 돼요. 모든 복소수 값은 binary64 값 쌍으로 저장되고, 16진수나 2진수 표기를 써도 실제 정수가 되지는 않아요. 다음은 모두 같은 값을 나타내는 복소수 상수 예시예요.
3 + 42i
3 + 42j
3 + 42I
3 + 42J
3.0 + 42.0i
3.0 + 0x2Ai
3.0 + 0b10_1010i
0.3e1 + 420e-1i
double 함수는 값을 배정밀도 형으로 변환해요.
y = double (x)
complex 함수는 실수 인자로부터 복소수 값을 만들어요.
z = complex (x)
z = complex (re, im)
실수 인자 1개 x를 주면 복소수 결과 x+0i를 반환해요. 실수 인자 2개를 주면 re+imi 결과를 반환해요. complex는 a+b*i 같은 표현식보다 더 편리할 때가 많아요. 예를 들어:
complex ([1, 2], [3, 4])
⇒ [ 1 + 3i 2 + 4i ]
Chapter 관련 함수 → real, imag, iscomplex, abs, arg
복소수→실수 자동 축소
Octave는 허수부가 0이 되면 복소수 형을 실수 형으로 자동으로 좁혀요. 인터프리터는 메모리를 아끼고 MATLAB 동작을 흉내 내기 위해 기회가 있을 때마다 이 축소를 수행해요. 예를 들어 어떤 변수가 처음에 복소수 값 4 + 2i였다가 그 뒤에 2i를 빼면, 복소수 형 4 + 0i가 아니라 실수 형 4가 돼요. iscomplex (4+2i - 2i)로 결과 형이 복소수인지 검사하면 false를 반환해요.
허수부가 0이어도 값이 복소수 형임을 보장하려면 4 + 0i 대신 complex (4, 0)을 써요. 그래도 인터프리터는 다음에 그 값이 변경될 때(예: 1을 더할 때) 허수부가 실제로 0이 아니게 되지 않는 한 여전히 실수 형으로 축소해요.
더 알아보기
- Matrices — 행렬
- Ranges — 범위
- Single Precision Data Types — 단정밀도 데이터형
- Integer Data Types — 정수 데이터형
- Bit Manipulations — 비트 조작
- Logical Values — 논리값
- Automatic Conversion of Data Types — 데이터형 자동 변환
- Predicates for Numeric Objects — 수치 객체 판별