정수만 갖고 코딩하는것도 초보 수준인데 개념만 살짝 갖고 있는 float 변수형의 16자리수 계산에 대해 개념을 잡으려니 안개처럼 몽실몽실하게 흩어지는군요.
출처: http://elenoa.tistory.com/241
일단 부동소수점이 정확하기 힘들다는 것은 알았습니다.
이진수로 십진수를 계산하기 때문에 어쩔 수 없는 문제지요.
예전에 인텔도 CPU에서 부동소수점 처리에 결함이 생긴 펜티업 칩 때문에 큰 손실을 본 적이 있습니다(링크)
그리고 저는 고작 10여자리의 부동소수점 때문에 골머리를 썩고 있네요.
아두이노의 레퍼런스를 읽어봅니다
6-7자리의 정확도를 갖고 있다는군요.
거기다 저는 연산을 해야 하기 때문에 곱셈/덧셈을 할때마다 정확한 자리수가 줄어들겠죠?
생각해보니 이것도 큰 문제네요. 소숫점 이하 50자리까지 정확하다고 해도 그 숫자끼리 몇번 곱하면 곱할때마다 자릿수의 절반씩은 믿을 수 없게 될텐데요
double 을 사용한다고 해도 모자랍니다.
비슷한 문제를 저만 겪는 건 아닐 것 같아 검색을 해보니 포럼에 비슷한 토론이 많이 있는데 딱히 이거다 하는 해결책은 안보이는군요.
하드웨어의 한계도 있어서 이런 물건도 나오는 듯 합니다.
그 와중에 GitHub에서 SoftFloat 이라는 아두이노 라이브러리를 찾았는데
description이 하나도 없어서 이해를 못하겠네요;; 헤더파일 보고 해석할 역량은 안되는데 말이죠
https://github.com/mmoller2k/Float64
'Making > 빈티지 아두이노 계산기' 카테고리의 다른 글
빈티지 스타일의 아두이노 계산기 #7 (0) | 2017.12.19 |
---|---|
빈티지 스타일의 아두이노 계산기 #6 - 큰 수 처리용 아두이노 라이브러리 발견. (0) | 2017.11.17 |
빈티지 스타일의 아두이노 계산기 #4 - 키패드 매트릭스 테스트 및 변수형 처리 고민. (2) | 2017.10.29 |
빈티지 스타일의 아두이노 계산기 #3 - Atmega128 부트로더 굽기, 테스트보드 만들기. (0) | 2017.10.28 |
빈티지 스타일의 아두이노 계산기 #2 - ATmega128 보드 제작 및 부트로더 심기 - 실패 (0) | 2017.10.18 |