浮点精度

And*_*oth 3 c# c++ math floating-point double

我有一个用C#编写的程序,有些部分是用本机C/C++编写的.我使用双精度来计算某些值,有时由于精度太低而导致结果错误.经过一番调查后,我发现有人正在将浮点精度设置为24位.当我将精度重置为至少53位(使用_fpreset或_controlfp)时,我的代码工作正常,但我仍然需要确定谁负责将精度设置为24位.

我能做到这一点的任何想法?

Gre*_*ill 13

这是由默认的Direct3D设备初始化引起的.你可以通过传递D3DCREATE_FPU_PRESERVE标志告诉Direct3D不要弄乱FPU精度CreateDevice.CreateFlags.FpuPreserve如果需要,还有一个与此标志()等效的托管代码.

可以在Direct3D和FPU上找到更多信息.