Python

4. (과제1) 실수 연산에 관하여

muru_ 2024. 3. 12. 16:44
 
1 + 1 == 2
 

 

위의 결과는 True

 

 
0.1 + 1.1 == 1.2
 

 

위의 결과는 False가 나오는 이유가 무엇일까?

 

컴퓨터는 2진수로 숫자를 표현한다. 

파이썬에서(다른 언어도 마찬가지) 실수를 표현할 때 부동소수점 방식을 사용한다.

( 0.1 <- 고정소수점, 0.01 * 10 <- 부동소수점 )

컴퓨터로 실수를 표현하는 데에 효율적이지만, 동시에 실수를 정확히 표현하는데 한계가 있어서 오차가 발생한다.

따라서 0.1 + 1.1 의 결과는 1.2000000000002 이런식으로 나오게 된다.

 

파이썬에서 제공하는 math 함수를 사용하면 해결 가능하다.

 
import math
math.isclose(0.1 + 0.2, 0.3)
 

 

위의 결과는 True