我有一个用 C# 编写的程序,有些部分是用 native C/C++ 编写的。 我使用 double 来计算一些值,有时由于精度太小,结果是错误的。经过一番调查,我发现有人将浮点精度设置为 24 位。当我将精度重置为至少 53 位(使用 _fpreset 或 _controlfp)时,我的代码工作正常,但我仍然需要首先确定谁负责将精度设置为 24 位。
有什么想法可以实现吗?
最佳答案
这是由默认的 Direct3D 设备初始化引起的。您可以通过传递 D3DCREATE_FPU_PRESERVE
告诉 Direct3D 不要扰乱 FPU 精度。标记为 CreateDevice
。如果您需要,还有一个与此标志 (CreateFlags.FpuPreserve
) 等效的托管代码。
更多信息可以在 Direct3D and the FPU 找到.
关于c# - 浮点精度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1201051/