본문 바로가기

코딩/파이썬

파이썬 과제 (1). 컴퓨터 연산 문제

 

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