이번엔 int형 데이터와 float형 데이터에 대해 알아보는 시간을 갖도록 하겠습니다!
먼저 정수의 표현과 실수의 표현을 보면
일단
num=1
num1=1.00000000000001
num2=1.1
print(num)
print(num1)
print(num2)
print(num1+num2)
이렇게 num엔 정수를, num1, num2엔 실수의 값을 저장했습니다!
여기서 num에는 정확히 1이라는 값이 저장되지만!
num1, num2에는 정확히 1.0000000000000000001, 1.1 이라는 값이 저장되지 않고 오차가 있는 값이 저장되게 됩니다!
print로 num1, num2를 출력해보면 저장된 값이 그대로 나옵니다!
하지만 둘을 더한 값을 출력한다면?!
밑에 보이는 것과 같이 계산값이 다른 것을 알 수 있습니다!
이유는 각각 print를 했을 땐 오차가 너무 작아서 눈에 보이지 않을 뿐이고
num1+num2를 했을 때 오차끼리 더해져서 값이 커져 그 오차가 눈에 보이는 것입니다.
따라서 num1, num2에 저장된 값은 정확히 저 값들이 아닙니다.
정리를 해보자면!
1. 파이썬이 '정수를 표현 및 저장하는 방법'과 '실수를 표현 및 저장하는 방법'은 다르다.
2. 파이썬은 정수를 아주 정확히 표현하고 저장할 수 있다.
3. 파이썬은 실수를 오차 없이 표현하고 저장하지 못한다. 실수에는 약간의 오차가 있다.
이번엔 int형과 float형 값을 대상으로 할 수 있는 기본적인 산술 연산을 알아봅시다!
+ |
덧셈 |
- |
뺄셈 |
* |
곱셈 |
** |
거듭제곱 |
/ |
실수형 나눗셈 |
// |
정수형 나눗셈 |
% |
나머지가 얼마? |
이렇게 +,-, ... 같이 어떤 연산을 할 때 사용하는 기호들을연산자라고 부릅니다!
print(5/2)
print(5//2)
print(5%2)
거듭제곱까진 다들 아실거고... 실수형 나눗셈, 정수형 나눗셈, 나머지에 대해 헷갈리실 수도 있으니까!
5/2를 하면 2...1 이거나 2.5자나여?? 그 2.5가 실수형 나눗셈의 결과값 입니다!
그럼 정수형 나눗셈은 5/2를 한 결과값에서 몫 부분이 됩니다!
그럼 5%2를 하면 2...1에서의 나머지 값인 1이 되면 되겠죠??
그 결과는 이렇게 나옵니다!
num=10
num=num+10
근데 이거 좀 귀찮아보이지 않나여,,,?
그럴 때 쓰는게 복합 대입 연산자입니다!
num=10
num+=10
이렇게 num을 한번만 쓰고 +=를 쓰면 num에는 기존 num값에 10이 더해진 수가 num에 저장됩니다~
다른 것들도 응용해볼 수 있겠져??
num-=10이라던가,,, num*=10이라던가,,,
그럼 int형을 float로 바꾸거나 float형을 int형으로 바꾸고 싶을 땐 어떻게 해야될까요?
간단합니다!
num1=1
num2=1.8
num1=float(num1)
num2=int(num2)
print(num1)
print(num2)
이렇게 변수나 수에 float()함수나 int()함수를 써주면 됩니다!
그래서 이전 글 마지막부분에서 eval()함수 대신에 int형을 쓴 겁니다..ㅎㅎ
여기서 주의할 점은 float형을 int형으로 바꿀 때 반올림이 된다고 생각하실 수도 있는데 아닙니다!
int형으로 바꿀 때 소수점 이하의 값은 사라지게 됩니다!
이 점 유의하시고 바꿔주시면 좋을 것 같네여
그럼 이번 글은 여기서 마치도록 하겠습니다! :D
'Python' 카테고리의 다른 글
Chapter 06. 리스트와 문자열의 함수들 (0) | 2021.01.08 |
---|---|
Chapter 05. 리스트와 문자열 (0) | 2021.01.07 |
Chapter 03. 프로그램 사용자로부터의 입력 그리고 코드의 반복 (0) | 2021.01.05 |
Chapter 02. 간단한 함수 만들기 (0) | 2021.01.05 |
Chapter 01. 파이썬에게 질문하기 (0) | 2021.01.05 |