C#
이 정확도의 이유는 부동 소수점 번호가 메모리로 표현되는 방식 때문입니다. 이 디지털 스토리지는 꼬리 번호 (소수 부분), 인덱스 (베이스의 전력) 및 기호의 조합입니다. 그러나 꼬리 번호의 정확도는 제한적입니다.
C#에서 단일 -예비 부동산 지점 번호 (Float)는 23 자리이며 듀얼 -프리션 플로팅 포인트 번호 (더블)에는 52 비트 테일 번호가 있습니다. 결말 번호를 정확하게 표현할 수없는 경우, 4 개의 주택으로, 5 개는 가장 가까운 숫자를 나타냅니다.위의 예에서 0.09 99.999999 4 채의 주택과 5 개는 9.0입니다. 결과적으로,이 두 값은 비교적 동일하고 프로그램은 거짓을 출력합니다.
이 정확도를 줄이기 위해 IEEE 754 Floating -Point Operation Standard는 "Epsilon"의 개념을 소개합니다. 즉, 최소 전진 -플로팅 포인트를 변경하지 않고 1.0에 추가 할 수 있습니다. C#에서이 값은 약 1.4013E-45입니다.<code class="language-csharp">class Program { static void Main(string[] args) { float f1 = 0.09f * 100f; float f2 = 0.09f * 99.999999f; Console.WriteLine(f1 > f2); } }</code>
위 내용은 C#의 부동 소수점 비교가 때때로 예상치 못한 결과를 산출하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!