[02-2] Python - 숫자 (Numbers)

Language/Python 2016.08.07 15:38 posted by TechNote.kr


Python에서 숫자(Numbers) 자료형은 가장 기본이되는 자료형이다.



  1. 숫자 표현
  2. 숫자 계산을 위한 연산자
  3. Type casting (형 변환)

 



1. 숫자 표현


 Python에서 숫자는 크게 4가지의 형태로 표현이 가능하다. 


  • int (plain integers) : 정수
  • long (long integers) : int 보다 범위가 큰 정수
  • float (floating point numbers) : 실수
  • complex (complex numbers) : 복소수


[int 의 표현]


범위 : -9223372036854775808 ~ 9223372036854775807 (-sys.maxsize-1 ~ sys.maxsize)


C언어의 long을 이용하여 구현된 자료형이다. 다른 언어와 마찬가지로 interger 값이 저장된다. 0x로 시작되는 16진수, 0o으로 시작되는 8진수도 마찬가지로 int 로 다루어진다.

>>> a=1
>>> type(a)
<type 'int'>

>>> a=0xFF
>>> type(a)
<type 'int'>

>>> a=0o33
>>> type(a)
<type 'int'>
>>> import sys
>>> sys.maxsize
9223372036854775807
>>> -sys.maxsize-1
-9223372036854775808
>>> -sys.maxsize-2
-9223372036854775809L



[float 의 표현]


범위 : python이 돌아가는 machine에 달려있다. (sys.float_info 를 통해 확인)


>>> sys.float_info
sys.float_info(max=1.7976931348623157e+308, max_exp=1024, max_10_exp=308, min=2.2250738585072014e-308, min_exp=-1021, min_10_exp=-307, dig=15, mant_dig=53, epsilon=2.220446049250313e-16, radix=2, rounds=1)


>>> a=1.1
>>> type(a)
<type 'float'>



[long 의 표현]


범위 : 문서상으로 특정되어 있지 않다. (unlimited precision)


integer의 범위를 벗어나면 long integer 형으로 표시된다. 

>>> a=1234567890L
>>> type(a)
<type 'long'>



[complex (복소수)의 표현]

>>> a=1+2j
>>> type(a)
<type 'complex'>
>>> a.real
1.0
>>> a.imag
2.0




2. 숫자 계산을 위한 연산자


 기본적으로 사용되는 연산자로 사칙연산을 위한 +, -, *, /  가 있다. 

>>> 1 + 2
3
>>> 4 - 1
3
>>> 3 * 3
9
>>> 8 / 4
2
>>> 7 / 4
1
>>> 7.0 / 4
1.75
>>> 7 / 4.0
1.75

 +, -, * 의 경우 여타 다른 언어들의 계산과 동일하지만 / 의 경우 정수형에서 정수형을 나누게 될 경우 결과도 정수형으로 표현되어 소수점 이하 결과가 표현되지 않는다는 점을 알고 있어야 한다. 소수점까지 모두 표현하기 위해서는 인자 중 하나를 실수로 하여 계산을 하면 된다.


>>> 7 / 0
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ZeroDivisionError: integer division or modulo by zero
>>> 7.0 / 0
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ZeroDivisionError: float division by zero

 다른 언어들과 마찬가지로 0으로 나누는 계산은 조심해야 한다. "integer division or modulo by zero" 혹은 "float division by zero" 와 함께 ZeroDivisionError 가 발생한다. 




3. Type casting (형 변환)


 여타 다른 언어들과 마찬가지로 type을 변경할 수 있다. 


int 로 변환 : int(x)

float 로 변환 : float(x)

long 으로 변환 : long(x)

complex 로 변환 : complex(x)

>>> a = 1
>>> type(a)
<type 'int'>
>>> b = float(a)
>>> type(b)
<type 'float'>
>>> a = 1.0
>>> type(a)
<type 'float'>
>>> b = int(a)
>>> type(b)
<type 'int'>
>>> a = 1
>>> type(a)
<type 'int'>
>>> b = complex(a)
>>> print b
(1+0j)
>>> type(b)
<type 'complex'>