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)
我刚用这个设置测试了你的代码,它运行得很完美:
void Main()
{
var myData = new float3
{
x = 1,
y = 1,
z = 1
};
float result = myData.GetMagnitude();
}
Run Code Online (Sandbox Code Playgroud)
我得到了结果1.73 ...
问题可能在其他地方吗?你能创建一个小型控制台应用程序并插入该代码只是为了隔离它吗?