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

C. *_*ier 1 c# math equation visual-studio-2019

我做了一些研究,似乎找不到我需要的东西。这可能是一个简单的修复,但我很难过。我正在尝试用 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();
    }
Run Code Online (Sandbox Code Playgroud)

原始方程

Wyc*_*yck 7

这段代码是罪魁祸首: / (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