파이썬 / 는 항상 실수
10 / 2를 5라고 썼다가 틀리는 문제. 파이썬의 /는 결과가 어떻든 항상 float라서 답은 5.0이다.
핵심: 5.0과 5는 값은 같고 타입만 다르다.
10 / 2 == 5 # True ← 값은 같음
type(10 / 2) # float ← 타입이 실수라서 5.0으로 표기
왜 이렇게 됐나? Python 2에서는 10/3 → 3, 10/3.0 → 3.333이었다. 넣는 값에 따라 결과 타입이 바뀌니 조용히 틀리는 버그가 많았다. 그래서 Python 3은 아예 연산자를 둘로 쪼갰다.
| 연산자 | 이름 | 결과 |
|---|---|---|
/ | 참 나눗셈 | 항상 float |
// | 정수 나눗셈 | 정수끼리면 int (버림) |
정수 5가 필요하면: 10 // 2 또는 int(10 / 2)
시험 대비
/를 보면 무조건 소수점을 달아라. 5라고 쓰면 틀린다.
| 식 | 출력 |
|---|---|
10 / 2 | 5.0 |
4 / 2 | 2.0 |
10 / 3 | 3.3333333333333335 |
10 // 3 | 3 |
10 // 2 | 5 |
10 / 3의 끝자리가 ...35로 지저분한 건 실수 오차 때문. 시험에 이렇게 긴 값은 안 나오니 신경 안 써도 된다.
반대로 C는 정수끼리 나누면 항상 버림이라 7 / 2 → 3 - 언어끼리 정반대라 세트로 외워두면 좋다 → 노트 C 자료형.