C#-是否有一个32位浮点数学库

本文关键字:浮点数 32位 是否 有一个 C#- | 更新日期: 2023-09-27 17:48:49

我计划用c#而不是c++(使用SlimDX)做下一个项目。

所有directX都使用float,而System.Math使用doubles。这意味着不断地在浮点和双精度之间转换。

所以理想情况下,我想用浮点来写所有的代码,因为无论如何,我不会一直从双精度转换为浮点。。。

然而,我一直找不到一组使用浮点运算的.net数学函数。我当然可以用c#编写自己的库,但我宁愿使用一个经过优化的现有库等。

C#-是否有一个32位浮点数学库

XNA提供了几个数学常数(包括3D专家,如PI/2等)和一些具有浮点精度的高级数学函数(尽管不是三角函数)。虽然这对你来说很可能不是一个选择,但由于XNA不如SlimDX那么纤薄,这当然意味着System.Math要么实际上缺少了什么,要么性能没有那么大。根据我的经验,你实际上并没有为自己计算那么多,因为大部分都是由几何类(矩阵、四元数、向量)或GPU本身处理的。

从这个角度来看,我想了解一下SlimDX,他们提供了什么。似乎矩阵、向量、四元数(甚至16位浮点)等典型的东西已经存在了。如果您缺少一些具有浮点精度的常量,只需自己创建它们(不要每次都进行强制转换,只在启动时进行)。

是的,如果这是所需的所有精度,那么通过在浮点中端到端工作,您将获得非常显著的性能提升。

从CenterSpace软件中查看NMath库。整个库始终支持浮点、双精度和复杂类型。

Paul

标题中的问题答案:是。

.NET Core 2.0(.NET Standard 2.1)开始,您可以使用内置的MathF类来处理浮点类型以执行数学运算。

请参阅MSDN 上有关MathF类型的文档