2016-09-05 5 views
0

왜 십진수는 0.1과 같은 숫자를 나타낼 수 있으며 부동 소수점 수는 이해할 수 없습니다. 예를 들어 이렇게 많은 기사와 질문을 읽었습니다. 이 하나 : Difference between decimal, float and double in .NET?왜 십진수는 반올림 오류가 발생하지 않습니까?

위의 링크의 답변자는 부동 소수점이 기본 2이고 소수는 10 진수라고 말합니다.이 문제는 그와 관련이 있다고 생각합니다. 그러나 나는 @BK 스펄전과 같은 혼란을 겪고있다. 모든 것이 결국 기본 2입니까?

+0

의 기수로를 작성하는 경우 반올림에서도오류 무료입니다 - 그들은 단지 정확하게 유효한 시간 수를 나타낼 수 있습니다. http://csharpindepth.com/Articles/General/FloatingPoint.aspx 및 http://csharpindepth.com/Articles/General/Decimal.aspx가 도움이되는지 확인해보십시오. 그렇지 않은 경우 질문을 편집 할 가치가 있습니다. 당신이 찾고있는 것에 대해 더 명확하게 ... 또는 다른 질문에 대답에 코멘트를 추가하십시오. –

+0

@ 존 스키켓, 고마워. 주말에 기사를 읽었고 도움이되었습니다. 그러나, 나는베이스 2 v베이스 10의 주장 주위에 내 머리를 얻을 수 없습니다. 모든 것이 결국 기본 2입니다. 앞으로 C#을 더 많이 사용해야하므로 앞으로 며칠 이내에 귀하의 책 (깊이있는 C#)을 구입할 계획입니다. – w0051977

+0

음, 분명히 "비트"가 있지만 ... 이진 부동 소수점과 십진수 부동 소수점 모두에 대해 숫자를 정수 및 배율로 생각할 수 있습니다 ... 및 10 진수로 "정수"는 기수 10이므로 123의 정수와 -2의 척도는 1.23으로 끝납니다. –

답변

1

진수 숫자는 참으로 그들은 가장 확실하게 하지 "결국 기본이"그래서 당신이 (10)의 기수로를 쓰기로 반올림에서오류가 없음을 나타 납니까.

IEEE754 부동 소수점 숫자는 그들은 반올림 오류에 면역이 아니에요 2.

관련 문제