1 + 1
결과 : 2
1 + 1 == 2
결과 : True
0.1 + 1.1
결과 : 1.2000000000000002
0.1 + 1.1 == 1.2
결과: False
✔ 왜❓❕ 위의 결과처럼 나오는지에 대한 원인을 찾아보자 👱♀️!!!
1. = 연산자와 == 연산자의 차이는???
= 연산자는 할당 연산자, 즉 = 의 우항에 있는 피연산자(operand)*를 좌항의 피연산자에 할당할 때 쓰는 연산자.
변수에 값을 할당할 때 쓰인다!
== 연산자는 비교 연산자, 두 객체의 값이 같은지 다른지 비교할 때 쓰임, 같으면 True, 다르면 False를 출력한다.
* 피연산자 : 명령의 일부로서 연산자에 의해 처리되는 데이터
2. 0.1 + 1.1은 소수점이 그대로 나오고(실수), 1.2와 비교했을 때 false이므로 우리가 생각하는 0.1+ 1.1 = 1.2가 틀렸다고 나오는데!!!
이는 왜 그런것인가?!!?!
>> 해답은 ''부동소수점 실수''라는 개념 속에 있다!
- 프로그래밍 언어는 IEEE 754라는 국제표준에 따라 실수를 부동소수점의 방식으로 나타내는데,
부동소수점 방식은 숫자를 정수로 된 유효숫자와 정수로 된 지수의 곱으로 표현한다.
> 파이썬에서는 유효숫자e지수라는 방법으로 부동소수점을 나타내기도 한다.
ex ) 294e3 # 294.0 x 10*3
>> 특히 컴퓨터는 이진법을 사용하기 때문에 십진법과의 오차가 발생한다는점!!
그것을 부동소수점 오차라고 말한다!!
파이썬 콘솔이나 주피터 노트북은 REPL* 인터페이스에서 값이 출력될 때 편의상 일정 소수점 이하는 생략하고 출력된다고 한다.
*REPL : Read-Eval-Print-Loop의 약자 (읽고,평가하고, 출력하고, 다시 원위치로 돌아가는 과정 반복)
>> 그렇기 때문에 이는 부동소수점 오차로 인해 나타난 현상이라 볼 수 있다!
'코딩 > 파이썬' 카테고리의 다른 글
문자열 다루기 (2) | 2024.03.13 |
---|---|
파이썬의 출력 (0) | 2024.03.12 |
마크다운(Markdown) (0) | 2024.03.11 |
구글 코랩(Colab) (0) | 2024.03.11 |
파이썬의 개념, 특징, 활용 (0) | 2024.03.11 |