c++ 浮点精度

cgvd09ve  于 2023-03-05  发布在  其他
关注(0)|答案(3)|浏览(142)

我有一个用C#编写的程序,有些部分是用原生C/C++编写的。我使用双精度来计算一些值,有时结果会因为精度太小而出错。经过一番调查,我发现有人将浮点精度设置为24位。当我将精度重置为至少53位时,我的代码工作正常(使用_fpreset或_controlfp),但我仍然需要弄清楚谁首先负责将精度设置为24位。
你知道谁能做到吗?

euoag5mw

euoag5mw1#

这是由默认的Direct3D设备初始化引起的。您可以通过将D3DCREATE_FPU_PRESERVE标志传递给CreateDevice来告诉Direct3D不要影响FPU精度。如果需要,还有一个与此标志(CreateFlags.FpuPreserve)等效的托管代码。
更多信息请访问Direct3D and the FPU

qjp7pelc

qjp7pelc2#

通过程序分区进行二进制搜索并确定哪些调用会降低精度,这又如何呢?

jslywgbw

jslywgbw3#

您的代码使用DirectX或XNA吗?我肯定听说过这会导致一些问题-一些DirectX初始化代码(可能只在托管 Package 器中?)降低了精度。

相关问题