C# 在C语言中写复指数方程有困难吗#

C# 在C语言中写复指数方程有困难吗#,c#,math,visual-studio-2019,equation,C#,Math,Visual Studio 2019,Equation,我做了一些研究,似乎找不到我需要的东西。这可能是一个简单的解决办法,但我被难住了。我试着用c#写和方程,它会给我返回一个NaN值,我不知道为什么。 我已经在下面发布了我的代码以及原始方程式的图片。任何帮助都将不胜感激,我认为我没有正确地输入方程式 static void Main(string[] args) { int playerLevel; double experience = 1; WriteLine("Please E

我做了一些研究,似乎找不到我需要的东西。这可能是一个简单的解决办法,但我被难住了。我试着用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
0,因为它是整数除法
1
是一个整数,
7
是一个整数,因此
/
将使用整数除法,给出
0
此代码是罪魁祸首:
/(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
0,因为它是整数除法
1
是一个整数,
7
是一个整数,因此
/
将使用整数除法,在所有数字后加上“.0”或“d”,表示它们不是整数。 例如,写“1.0”而不是“1”。

在所有数字后面加上“.0”或“d”,表示它们不是整数。
例如,写“1.0”而不是“1”。

使用
1.0/7.0
等,而不是先进行整数除法,然后尝试将其转换为双精度除法。1/7是零。始终将double作为double编写,不进行转换。您是否调试了代码,哪一行出错?我建议您使用一些好的命名变量将一行方程式拆分为多个较小的计算。这也会使调试变得更容易。你应该使用中间变量分解这一可怕的大行,以便能够看到东西并进行调试…使用
1.0/7.0
等,而不是先进行整数除法,然后尝试将其转换为双精度除法。1/7是零。始终将double作为double编写,不进行转换。您是否调试了代码,哪一行出错?我建议您使用一些好的命名变量将一行方程式拆分为多个较小的计算。这也会使调试变得更容易。你应该使用中间变量分解这一可怕的大行,以便能够看到东西以及调试。。。