是否有Math.PI等效返回浮点数?

时间:2011-12-21 02:09:10

标签: c# floating-point

我正在编写C#应用程序,我希望PI的值为float,而不是double。目前我将值从double转换为float,最后在整个代码中使用丑陋(浮动)Math.PI。

是否有内置PI函数返回浮点数?

编辑:为什么要使用浮点而不是双精度?我正在使用很多浮点数,并且处理大量数字,因此较小的数据==更适合缓存==更好的性能。

7 个答案:

答案 0 :(得分:7)

据我所知。只有你自己的常数:

const float PI = (float)Math.PI;

答案 1 :(得分:4)

关于定义浮点常量的答案都是正确的。

但我很好奇为什么你需要更低的精度?

通常的方法是以更高的精度执行计算并投出最终答案,而不是投射中间人(这可能导致错误累积,具体取决于您正在执行的计算类型)。

答案 2 :(得分:2)

没有这样的内置功能。<​​/ p>

如果您在很多情况下从doubleMath.PI)投射到float,请将值存储为浮动某处。因为类中的static / const成员非常合适,如果类使用了很多值。

另外,你可以在你自己的对象中使用的其他地方创建一个对象,其中包含pi的变量(作为一个浮点数)是static

答案 3 :(得分:1)

如果你想摆脱(float)Math.PI cast,你为什么不写一个包装类和属性?

public class MathEx {

    public static float PI {
        get {
            return (float)Math.PI;
        }
    }

}

答案 4 :(得分:1)

从.NET Core 2.0(.NET Standard 2.1)开始,上层Microsoft通过将默认Math常量和方法包含在 {{ MathF命名空间的1}} 类,其所有形式和返回类型均为浮点数。

用法示例:

System

有关更多信息,请参见documentation on MSDN有关using System; class Class { public void Method() { float floatPi = MathF.PI; float floatSin = MathF.Sin(floatPi * 2); } } 类型的信息。

答案 5 :(得分:0)

实际上在XNA框架中有MathHelper.Pi Field,但我打赌你不需要任何其他额外的dll只需一次成本 - 更好地在你自己的帮助器中定义一个。 BTW,几乎总是双倍应默认选择。

答案 6 :(得分:-3)

试试这个:

const float Mypi = 3.14159265358979f;