C# 플로팅 포인트 산술에서의 부정확성 이해
많은 프로그래밍 작업에서 정확도가 가장 중요합니다. 그러나 C#의 부동 소수점 수 (플로트 및 복식)는 고유 한 제한으로 인해 부정확 한 결과를 얻을 수 있습니다. 이유를 탐색합시다. 이 C# 코드 스 니펫을 고려하십시오
논리적으로는 보다 커야합니다. 예상치 못한
결과는 컴퓨터에 부동 소수점 숫자가 저장되는 방식에서 비롯됩니다.
.
정확도 향상을위한 솔루션 : .
Epsilon 비교 : 부동 소수점 표현과 산술의 뉘앙스에 익숙해 지십시오. "모든 컴퓨터 과학자가 부동 소수점 산술에 대해 알아야 할 것"과 같은 자원은 일반적인 함정을 피하는 데 귀중한 통찰력을 제공합니다.
<code class="language-csharp">float f1 = 0.09f * 100f;
float f2 = 0.09f * 99.999999f;
Console.WriteLine(f1 > f2); // Outputs: False</code>
f1
이러한 부정확성을 완화하려면 이러한 접근법을 고려하십시오
f2
False
f1
직접 비교 대신 공차 값 (Epsilon)을 사용하여 두 부동 소수점 숫자의 차이가 허용 가능한 범위 내에 있는지 확인하십시오. f2
float
위 내용은 내 C# 플로팅 포인트 비교가 부정확 한 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!