gpt4 book ai didi

c# - 在 C# 中从 Math.Sqrt 获取不同的输出

转载 作者:太空宇宙 更新时间:2023-11-03 18:24:35 25 4
gpt4 key购买 nike

我对 C# 中的 Math.Sqrt 有一个有趣的问题。我在一个应用程序(应用程序中的不同位置)中从 Math.Sqrt 获得不同的输出。

我有一个大项目和应用程序有很多数学计算。

故事

应用程序中使用了动画 Irrlich dll代码:

private void Win_Load(object sender, EventArgs e)
{
double myOutput = Math.Sqrt(2.0); //1.4142135623730951
IrrlichtCreationParameters creationParameter = new IrrlichtCreationParameters();
creationParameter.DriverType = IrrlichtLime.Video.DriverType.Direct3D9;
IrrlichtDevice.CreateDevice(creationParameter);
myOutput = Math.Sqrt(2.0);//1.4142135381698608
}

我想每次输出1.4142135623730951。

任何人都知道为什么在使用 IrrlichtLime.Video.DriverType.Direct3D9 后得到不同的输出?

在哪些情况下我们得到的输出与 Math.sqrt 不同?

最佳答案

你对类型的使用不一致(尽管我没有看到你的代码)但这是证据:

double v1 = Math.Sqrt(2.0); // 1.4142135623730951
double v2 = (float)Math.Sqrt(2.0); // 1.4142135381698608

您需要在任何地方都使用相同的类型并且不要进行任何转换,否则您可能会失去一些精度。

在获得值 2.0(它可能 ≃ 2.0)之前,您似乎进行了大量计算。 Double 不能精确表示所有数字,如果你需要精度那么你必须使用 Decimal。

关于c# - 在 C# 中从 Math.Sqrt 获取不同的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38344340/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com