[NumberType1]

 

요건 중복코딩을 막기위해 메소드 하나 만든 거!!!

def pprint(value):
    print('value:',value,sep='',end=',')
    print('type:',type(value),sep='')

정수형(int)은 소수점이 없는 숫자를 의미

a=100;
pprint(a)  #결과 value:100,type:<class 'int'>

 

파이썬3에서는 정수/ 정수 = 실수임

b=10/5
pprint(b)  #결과 value:2.0,type:<class 'float'>

 

int()함수 : 정수로 변환하는 함수 - 소수점 이하 버림

c=int(b)
pprint(c)  #결과 value:2,type:<class 'int'>

 

**정수는 10진수 이외에도 2진수 8진수, 16진수로 표현가능
2진수: 숫자 앞에 0b(B)를 붙이며 0과 1을 사용.
8진수: 숫자 앞에 0o(O)를 붙이며 0부터 7까지 사용.
16진수: 숫자 앞에 0x(X) 붙이며 0부터 9, A부터 F까지 사용(소문자 a부터 f도 가능).

print('[각 진수로 숫자 표현하기]')
print('2진수:',0b10) # 1*2^1+0*2^0 = 2+0
print('8진수:',0o10)
print('16진수:',0x10)

 

int타입의 숫자는 크기에 제한이 없다. 즉 아무리 큰 정수라도 표현 할 수 있다.
파이썬3에서 int형으로 통합(long형이 없어졌네)

d=26516512165456564654656521 # 다 찍힘!!
pprint(d)

실수형(float)은 소수점이 있는 숫자를 의미
실수와 정수의  연산결과는 실수이다!

a=10
b=3.5
pprint(a+b)

 

 

print('[0.1+0.2 연산결과:0.3이 아니다]')
a=0.1
b=0.2
print(a+b) #0.30000000000000004
print(a+b == 0.3)  #False  부동소수점 오류!

 

 

정수를 실수로 변환하기

pprint(float(1+2))  #결과 value:3.0,type:<class 'float'>

 

 


[NumberType2]

import sys,math  #얜 모듈
from decimal import Decimal #얜 클래스

 

파이썬은 부동 소수점 방식으로 실수를 표현하는 데
고정 소수점 방식보다 넓은범위의 수를나타낼 수 있어
과학계산등등 많이  이용하나 근삿값으로 표현
단, 고정 소수점 방식보다 연산속도가 느리다

a=0.1
b=0.2

실수를 근삿값으로 표현하면서 발생하는 문제를 부동소수점 반올림 오차 라고 함
따라서 실수를 비교할 때는 연산한 값과 비교할값의 차이를 구한 뒤
sys.flat_info.epsilon(모듈에 있대..)보다 작거나 같은지 판단해야 한다. 

print(a+b== 0.3)  #false당연한거고
print('[부동 소수점 반올림 오차 해결방법1]')

 

 

2.220446049250313e-16(sys.flat_info.epsilon)값을
머신 앱실론...이라고 함 이건 또 뭐냐???
어마어마하게 작은 값을 뜻함
얘랑 비교해서 작거나 같다면 두 실수는 같은 값이라고 치는거

print(sys.float_info.epsilon)
print(math.fabs(a+b - 0.3)<= sys.float_info.epsilon )  #True가 나왔다? 걍 0.3이랑 같다고 하자! 오차가 너무 작으니까 !
#파이썬 3.5이상 부터는 두 실수가 같은지 판단할 때 math.isclose 함수를 사용.
print('[부동 소수점 반올림 오차 해결방법2]')
print(math.isclose(a+b,0.3))  #True

 

print('[부동 소수점 반올림 오차 해결방법3]')
#Decimal모듈의 Decimal로 고정 소수점으로 변환
#고정 소수점은 부동소수점 처럼 반올림 오차가 없다
print(Decimal('0.1')+Decimal('0.2') == Decimal('0.3')) #True

'학원 > PYTHON' 카테고리의 다른 글

02.10 [Flastk] 시작  (0) 2023.02.10
01/30 [PYTHON] variable2  (0) 2023.01.30
01/27 [PYTHON] variable1  (0) 2023.01.29
01/27 [PYTHON] 환경설정  (0) 2023.01.29

+ Recent posts