.NET에서 결정적 결과를 위한 부동 소수점 계산 강제
개발자는 .NET의 시스템 전체에서 일관된 결과를 추구하기 위해 고군분투합니다. 부동 소수점 결정론에 대한 도전입니다. Java의 fpstrict와 같은 내장 솔루션이 없으면 문제는 극복할 수 없는 것처럼 보입니다. 일부는 번거로운 고정 소수점 계산에 의지했지만 다른 일부는 명시적 캐스팅의 가능성을 탐구했습니다.
CLR 엔지니어 David Notario가 제안한 대로 모든 부동 소수점 연산 후에 명시적 캐스팅을 삽입하면 예측 가능한 동작이 발생할 수 있습니다. 그러나 Eric Lippert는 C# 컴파일러가 축소를 활성화하기 위해 런타임에 "힌트"만 제공할 뿐이라고 경고합니다. 이 힌트가 필요한 IL 변환으로 변환되는지 여부는 불분명합니다.
C# 사양과 CLR 사양을 자세히 살펴보면 다음과 같은 사실을 확인할 수 있습니다.
이에도 불구하고 명시적 캐스팅만으로는 시스템 전체의 재현성을 보장하기에는 충분하지 않습니다. CLR을 사용하면 중간 계산 중에 결과를 더 높은 정밀도의 FPU 레지스터에 저장할 수 있습니다. 정적 필드 또는 배열 요소에 할당하면 강제로 잘릴 수도 있습니다.
FPU 설정과 같은 다른 요인으로 인해 여전히 변형이 발생할 수 있습니다. 실제로 재현 가능한 산술을 보장하려면 개발자는 대신 정수 사용을 고려하는 것이 좋습니다.
위 내용은 .NET에서 결정적인 부동 소수점 결과를 어떻게 얻을 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!