C# 有32位浮点数学库吗? 我计划在C语言中做下一个项目,而不是C++(使用SLIMDX)。

C# 有32位浮点数学库吗? 我计划在C语言中做下一个项目,而不是C++(使用SLIMDX)。,c#,math,floating-point,C#,Math,Floating Point,所有directX都使用浮点数,而System.Math使用双精度浮点数。这意味着在浮动和双精度之间不断转换 因此,理想情况下,我希望使用浮点数来编写所有代码,因为我不会一直从双精度转换为浮点数 然而,我无法为.net找到一组使用浮点数的数学函数。我当然可以用c#编写自己的库,但我宁愿使用经过优化的现有库等。XNA提供了几个数学常数(包括3D专家,如PI/2等)和一些具有浮点精度的高级数学函数(尽管不是三角函数)。虽然这很可能不是您的选择,但由于XNA没有SlimDX那么纤细,这肯定意味着该系统

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

因此,理想情况下,我希望使用浮点数来编写所有代码,因为我不会一直从双精度转换为浮点数


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

XNA提供了几个数学常数(包括3D专家,如PI/2等)和一些具有浮点精度的高级数学函数(尽管不是三角函数)。虽然这很可能不是您的选择,但由于XNA没有SlimDX那么纤细,这肯定意味着该系统。Math实际上缺少了一些东西,或者性能影响没有那么大。根据我的经验,您实际上并没有为自己计算那么多,因为其中大部分是由几何体类(矩阵、四元数、向量)或GPU本身处理的


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

是的,如果所需的精度都满足要求,则通过在浮点中端到端工作,您将获得非常显著的性能增益

从CenterSpace软件中检出库。整个库始终支持Float、double和complex类型


保罗

回答标题中的问题:

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


参见

虽然转换的成本不小,但性能的提高很大程度上取决于他执行操作的频率。我一直在使用System.Math版本的Sin/Cos等,但每次移动相机时,我只会使用几次,这意味着我不会从更改库中获得每秒一帧的效果。但是,如果您将硬核浮点操作作为主要工作负载(例如CPU上的程序地形生成),则最好使用这样的库来执行这些操作。github上存在一个问题,要求corelcr只执行此操作:。