[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 |