为什么我的返回值错了?

Use*_*400 2 c# floating-point double casting vector

我在C#中有一个矢量类(下面是一个片段).我的问题是,当我叫GetMagnitude(),它总是返回0.0F - 甚至与调试运行,我检查广场有一个有效值,只要它被传递回其他功能(如:规范化()),它返回0.0f.有人可以解释这个并帮我修复它吗?我的猜测是它与double-> float转换有关,但我无法理解它.

public class float3
{
    public float x;
    public float y;
    public float z;


    public float GetMagnitude()
    {
        float SumSquares = (float)( Math.Pow(x, 2) + Math.Pow(y, 2) + Math.Pow(z, 2));
        float Sq = (float)Math.Sqrt(SumSquares);
        return Sq;
    }

    public void Normalize()
    {
        float inverse = 1.0f / GetMagnitude();

        x *= inverse;
        y *= inverse;
        z *= inverse;
    }
}
Run Code Online (Sandbox Code Playgroud)

Mic*_*oie 5

我刚用这个设置测试了你的代码,它运行得很完美:

void Main()
{
    var myData = new float3
    {
        x = 1,
        y = 1,
        z = 1
    };
    float result = myData.GetMagnitude();
}
Run Code Online (Sandbox Code Playgroud)

我得到了结果1.73 ...

问题可能在其他地方吗?你能创建一个小型控制台应用程序并插入该代码只是为了隔离它吗?