티스토리 뷰
현상
- raspberry pi에서는 잘 동작하던 코드인데, notebook 환경에서는 정상적인 값이 출력되지 않았다.
예제 샘플코드
# 문제의 코드
# 매번 같은 결과값이 나옴
def create_time_key1():
max_value = sys.maxsize
now_seconds = time.time()
return int(max_value-now_seconds)
# 수정 후
# 결과값이 잘 나옴
def create_time_key2():
max_value = sys.maxsize
now_seconds = int(time.time())
return max_value-now_seconds
원인
- 부동소수점 연산 오류로 인해 발생한 이슈로 보인다. 라즈베리파이에서는 문제가 발견 안되었던게, python에서 int연산이 32bit로 연산이 되고, notebook에서는 64bit로 연산이 된다. 64bit max size라는 매우 큰 값에서 연산을 하니, (부동 소수점 연산에서 발생하는) 오차가 생기는 현상이 발생하며, 이를 int로 변형하는 과정에서 같은 값이 나온 것으로 보인다.
느낀점
- 부동소수점 연산 오차를 고려할 정도로 작업을 한 적이 없어서, 크게 신경안쓰고 코딩을 했는데, 처음으로 문제를 만났다. 모르던 지식도 아닌데, 괜히 특정 조건 때에 python에서 변수 할당이 잘못되나 싶어서 메모리를 뜯어보려면 어떻게하나 하며 삽질을 했다. 라즈베리 파이에서 잘 동작하는 코드라 신경쓰지 않고 있었는데, 이렇게 문제를 만나니 꽤 재미난 경험이었다. 하하.
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 커피
- 슈크림빵
- You'll Miss Me
- 롤라 런
- 교차하는 여러 감정들
- Je Vais Te Manqué
- 퍼프크림
- 미팅싸이트
- 봉오동승전지
- 발해성터
- 추억
- 여행
- 영화
- 정의는 무엇인가
- 이티오피아
- 선우진
- 대담회
- 안녕
- 커스터드크림
- 중국탐방
- 서울
- 10년전 메일
- 아스트랄
- 사랑
- 기본소득 블로그 선언
- 다망해라
- 유 윌 미스 미
- 그리움
- 기본소득
- 독립역사탐방
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
글 보관함