在C#中编写具有复指数的方程时遇到问题



我做了一些研究,似乎找不到我需要的东西。这可能是一个简单的解决办法,但我被难住了。我正在尝试用c#编写和等式,它为我返回了一个NaN值,我不知道为什么。我在下面发布了我的代码以及原始方程式的图片。任何帮助都将不胜感激,我不相信我输入的等式是正确的。

static void Main(string[] args)
{
int playerLevel;
double experience = 1;
WriteLine("Please Enter Your Current Level: ");
playerLevel = Convert.ToInt32(ReadLine());
try
{
experience = 1 / 8 * (Math.Pow(playerLevel, 2) - playerLevel + 600 * ((Math.Pow(2, Convert.ToDouble(playerLevel/7)) - Math.Pow(2, Convert.ToDouble(1/7))) / (Math.Pow(2, Convert.ToDouble(1/7)) - 1)));
WriteLine("Your current Experience is: " + experience);
}
catch (Exception err)
{
WriteLine(err.Message);
throw;
}
ReadKey();
}

原始方程式

这段代码是罪魁祸首:/ (Math.Pow(2, Convert.ToDouble(1 / 7)) - 1)

  • 1/7为0
  • 2^0是1
  • 1-1是0
  • 你除以零,得到NaN

考虑只写1.0/7.0而不是Convert.ToDouble(1 / 7)

可能让您感到困惑的部分是1/7,因为它是整数除法。1是整数,7是整数,所以/将使用整数除法,得到0

添加"。0";或";d";在你所有的数字之后,表明它们不是整数。例如,写";1.0〃;而不是";1〃;。

最新更新