#python #anaconda #jupyter-notebook #visual-code #html #css #javascript #http 제목[re]rounding error 질문 ㅜㅜ2023-03-16 21:15작성자박상근파이썬에서 소숫점을 저장할 때, 이진수로 저장하다보니 그 수를 정확하게 저장하지 못하고 오차가 발생하게 됩니다.예를 들면, 1/3을 소숫점으로 표현하면 0.33333333333......... 으로 무한히 3이 있어야 하는데 이 값을 정확하게 저장하는 것은 불가능하므로, 대략 0.33333333333333333333333333 수준에서 끊어야 합니다. 거기다 이를 이진수로 저장하려면 소수부가 더 길어질테구요. 0.1은 무한소수는 아니지만, 이 값도 이진수로 표현하면 너무 길어지기 때문에 특정 지점에서 끊게 되고, 결국 0.1이 아닌 0.1000000000000000055511151231257827021181583404541015625와 같은 값으로 저장됩니다. 0.1과 매우 유사한 값이긴 하지만 정확하게 0.1은 아닌 값이 되는 겁니다.0.1 + 0.2는 두 값을 이진수로 변환한 다음 더합니다. 그럼 그 결과는 우리가 생각한 0.3이 아니라 0.3과 아~~~~~~주 비슷한 0.30000000000000004가 됩니다. 그래서 0.1 + 0.2 는 0.3을 이진수로 변환한 값과는 미세하게 차이가 있기 때문에 같지 않다고 나옵니다.그런데 2.33은 이진수로 변환하면 다행히도(?) 소수부가 아주 길지 않은 수준에서 딱 계산이 떨어지나 봅니다. 그래서 2.33을 이진수로 변환해서 두 값을 더한 값은 4.66을 이진수로 변환한 값과 같다고 볼 수 있습니다. 2.33+2.33==4.66도 True이고 2.33+2.34==4.67도 True입니다.중요한 포인트는 파이썬으로 소숫점 계산시 이렇게 이진수로 변환하는 과정에서 오차가 발생할 수도 있음을 기억하는 것입니다.더 궁금한 점이 있으면 수업 전후에 문의주세요박상근 드림 목록수정삭제답변글쓰기 댓글 [0] 댓글작성자(*)비밀번호(*)내용(*) 댓글 등록 더보기이전rounding error 질문 ㅜㅜ웹파수강생2023-03-15다음[re]rounding error 질문 ㅜㅜ[조교] 이준오2023-03-16 Powered by MangBoard | 워드프레스 쇼핑몰 망보드