C#에서 배정밀도 부동 소수점 변수를 사용할 때 개발자는 소수 값과 관련된 비교에서 예상치 못한 결과를 접하는 경우가 많습니다. 그러한 문제 중 하나는 부동 소수점 표현의 기본 속성에서 발생합니다.
데이터 형식은 부동 소수점 값을 저장하기 위해 소수 대신 이진 분수를 사용합니다. 이 표현에는 한계가 있으며 일부 소수 값은 정확하게 저장할 수 없습니다. 예를 들어, 숫자 0.1은 이진 분수로 정확하게 표현될 수 없습니다. 근사치로 저장되므로 값이 약간 다릅니다. double
대신 decimal
데이터 유형을 사용하는 것이 좋습니다. double
숫자를 소수 표기법으로 저장하여 0.1과 같은 값을 정확하게 표현할 수 있습니다. 이렇게 하면 decimal
값을 비교할 때 발생하는 문제가 해결됩니다. double
0.1과 같은 소수 값은 반복되지 않는 이진 표현을 가지므로 기수 2 시스템에 정확하게 저장하기가 어렵습니다. 결과적으로
변수에 저장된 이진 근사값 0.1은 실제 값과 약간 다를 수 있습니다. double
문에서 예상 값 0.1이 저장된 값과 일치하지 않는 일관되지 않은 비교가 발생할 수 있습니다. if
데이터 유형을 사용하면 소수 값을 정확하게 저장하고 비교하여 이러한 문제를 피할 수 있습니다. decimal
위 내용은 부동 소수점 숫자를 사용할 때 C#에서 소수 값을 어떻게 정확하게 비교할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!