문제

C#로 작성된 프로그램이 있으며 일부 부품은 기본 C/C ++로 작성됩니다. 나는 복식을 사용하여 일부 값을 계산하며 때로는 정밀도가 너무 작기 때문에 결과가 잘못되기도합니다. 약간의 조사 후 나는 누군가가 부동 소수점 정밀도를 24 비트로 설정하고 있음을 알아 냈습니다. 내 코드는 정밀도를 53 비트 이상 (_fpreset 또는 _controlfp 사용)으로 재설정 할 때 잘 작동하지만, 누가 정밀도를 24 비트로 24 비트로 설정할 책임이 있는지 알아 내야합니다.

내가 이것을 달성 할 수있는 아이디어가 있습니까?

도움이 되었습니까?

해결책

이는 기본 Direct3D 장치 초기화로 인해 발생합니다. Direct3D를 전달하여 FPU 정밀도를 엉망으로 만들지 말라고 말할 수 있습니다. D3DCREATE_FPU_PRESERVE 깃발 CreateDevice. 이 플래그와 동등한 관리 코드도 있습니다 (CreateFlags.FpuPreserve) 필요한 경우.

자세한 정보는 다음에서 확인할 수 있습니다 Direct3d 및 FPU.

다른 팁

프로그램에 파티션을 통해 이진 검색을하고 어떤 통화가 정밀도를 줄이는 지 결정하는 것은 어떻습니까?

코드가 DirectX 또는 XNA를 사용 하는가? 나는 그로 인해 문제가 있다고 들었습니다. 일부 DirectX 초기화 코드 (아마도 관리 래퍼에서만)는 정밀도를 줄입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top