c# - 浮点精度

标签 c# c++ math floating-point double

我有一个用 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/

相关文章:

c# - 将数据从数据表复制到 SQL Server

C# 对象初始化程序将初始化只读属性,但仅适用于非原始类型

c++ - Vector 没有退缩

Javascript - 将两个输入字段相乘并显示

javascript - 如何遍历 html 元素并使用 javascript/jQuery 获取组合时间?

c# - 如何创建类似资源管理器的文件夹浏览器控件?

具有抽象基类的 C++ boost::ptr_map 导致插入问题

c++ - 计算字符串中子字符串的特定出现次数

python - 两个简单递归函数的大 O 表示法

c# - 从同步方法中的异步方法返回结果