DataScience
728x90
3*3.3
9.899999999999999

정수형x실수형 값이 이상하게 나온다.
컴퓨터가 실수를 표현할때 오차가 발생하기 때문인데
decimal, fraction 모듈을 써서 정확히 계산해주면 된다.

 

0.1 + 0.2 == 0.3
False

또한 두 실수가 같은지 확인할때도 이렇게 하면 안된다.

 

0.1+0.2
0.30000000000000004

근사값으로 표현하면서 발생함. 부동소수점 반올림 오차라고 함.
두 값이 차이가 sys.float_info.epsilon 보다 작거나 같으면 두 값은 같다고 판단.
sys.float_info.epsilon에 저장된 값을 머신 입실론(machine epsilon)이라고 함

단순히 두 값이 같은지 판단할때는 math.isclose 함수를 쓰면 된다.

 

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

DataScience

@Ninestar

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!