> 백엔드 개발 > C++ > 부동 소수점 계산이 C#가 부정확 한 이유는 무엇입니까?

부동 소수점 계산이 C#가 부정확 한 이유는 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2025-01-31 04:18:08
원래의
718명이 탐색했습니다.

Why Are Floating-Point Calculations in C# Imprecise?

c# 의 부동 소수점 수정 이해를 이해합니다 플로팅 포인트 산술의 고유 한 부정확성은 종종 예상치 못한 결과로 이어집니다. 이 C# 코드 스 니펫 : 를 고려하십시오 출력 "False"는 반 직관적이며 두 계산 모두 9.0을 산출하는 것으로 보이므로 직관적입니다. 이 불일치는 부동 소수점 표현의 한계에서 발생합니다 IEEE 754 표준 부동 소수점 숫자는 분수 부품을 나타내는 유한 한 비트를 사용합니다. 이것은 많은 소수점 값이 정확하게 저장 될 수 없다는 것을 의미합니다. 그들은 근사됩니다. 값 및 계산 결과는 근사치입니다. 이러한 근사치는 종종 무의미하지만 예기치 않은 비교를 유발할 수 있습니다 따라서 평등의 부동 소수점 수를 직접 비교하는 것은 신뢰할 수 없습니다. 대신 공차 기반 비교를 사용하십시오 : 이 접근법은 와

사이의 절대적인 차이가 사전 정의 된 임계 값 (이 경우 0.0001) 아래에 있는지 확인합니다. 응용 프로그램의 필수 정밀도에 따라 임계 값을 조정하십시오 대안 적으로

(Double-Precision Floating-Point Number)를 사용하면 (단일-프레임)보다 더 높은 정밀도를 제공하여 이러한 부정확성의 가능성이 줄어 듭니다. 그러나
class Program
{
    static void Main(string[] args)
    {
        float f1 = 0.09f * 100f;
        float f2 = 0.09f * 99.999999f;

        Console.WriteLine(f1 > f2); // Surprisingly prints "false"
    }
}
로그인 후 복사
값조차도 오류의 마진이 적더라도 유사한 제한이 적용됩니다. 신뢰할 수있는 부동 소수점 계산에는 정밀 요구 사항을 신중하게 고려하는 것이 필수적입니다.

위 내용은 부동 소수점 계산이 C#가 부정확 한 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿