gpt4 book ai didi

c# - .NET 中的数值不一致

转载 作者:行者123 更新时间:2023-11-30 16:09:41 25 4
gpt4 key购买 nike

我正在用 C# 构建一个类似 CAD 的应用程序。我使用 SlimDX 作为图形引擎,对于数字运算部分,我构建了最终依赖于 System.Math 类的自定义库。

现在,问题是 SlimDX 库使用由 float 数据类型组成的结构,而 Math 类包含几个只接受和返回 double 对象的方法,例如:Math.Ceiling,和 Math.Sin。所以我发现自己不断地来回转换数据,从 float 到 double。

这似乎不对。我不太关心强制转换可能对性能造成的影响(也许我应该这样?),但担心可能因此而产生的数值不稳定性,这更可怕。

所以我只是想知道您通常如何处理这些情况,因为我猜这一定不是罕见的情况。

最佳答案

不应有任何数值上的不一致。

.NET 中的三种 float 据类型(floatdoubleF 类型对 C# 不可用,但在内部使用许多成员)他们会出现三次:

  1. 应用程序的数学引擎完成的存储和定义。
  2. 由该引擎完成的计算。
  3. 渲染。

Number 1 大概是根据 double 来定义的。数字 2 也将主要根据 double 来定义,尽管它也会使用一些 F。出于您给出的原因,数字 3 将根据 single 定义,但如果层之间的边界定义明确,则这不会对实际计算的内容产生任何影响。

关于c# - .NET 中的数值不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27178392/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com