C#:控制台正在输出无穷大(∞)
C#: The console is outputting infinite (∞)
我在 Windows 10 上使用 Visual Studio 2015,我还是一个新的编码员,我刚刚开始学习 C#,在学习过程中,我发现数学 class 并且只是玩得开心,直到控制台输出:“∞”
这是一个控制台应用程序
代码如下:
var k = Math.Sqrt((Math.Pow(Math.Exp(5), Math.E)));
var l = Math.Sqrt((Math.Pow(Math.PI, Math.E)));
Console.WriteLine("number 1 : " + k);
Console.WriteLine("number 2 : " + l);
Console.ReadKey();
var subject = Math.Pow(Math.Sqrt((Math.Pow(Math.PI, Math.E))), Math.Sqrt((Math.Pow(Math.Exp(5), Math.E))));
Console.WriteLine(k + " ^ " + l + " = " + subject);
Console.ReadKey();
//output :
/*number 1 : 893.998923601492
number 2 : 4.73910938029088
893.998923601492 ^ 4.73910938029088 = ∞*/
为什么会这样?使用普通计算器,结果是:96985953901866.7
因为你在做
var subject = Math.Pow(l, k);
而不是
var subject = Math.Pow(k, l);
你正在用指数反转底数!
而且你真的应该重用你的变量,而不是重新计算一切! (如果你重用变量,问题会更明显)。
我在 Windows 10 上使用 Visual Studio 2015,我还是一个新的编码员,我刚刚开始学习 C#,在学习过程中,我发现数学 class 并且只是玩得开心,直到控制台输出:“∞”
这是一个控制台应用程序
代码如下:
var k = Math.Sqrt((Math.Pow(Math.Exp(5), Math.E)));
var l = Math.Sqrt((Math.Pow(Math.PI, Math.E)));
Console.WriteLine("number 1 : " + k);
Console.WriteLine("number 2 : " + l);
Console.ReadKey();
var subject = Math.Pow(Math.Sqrt((Math.Pow(Math.PI, Math.E))), Math.Sqrt((Math.Pow(Math.Exp(5), Math.E))));
Console.WriteLine(k + " ^ " + l + " = " + subject);
Console.ReadKey();
//output :
/*number 1 : 893.998923601492
number 2 : 4.73910938029088
893.998923601492 ^ 4.73910938029088 = ∞*/
为什么会这样?使用普通计算器,结果是:96985953901866.7
因为你在做
var subject = Math.Pow(l, k);
而不是
var subject = Math.Pow(k, l);
你正在用指数反转底数!
而且你真的应该重用你的变量,而不是重新计算一切! (如果你重用变量,问题会更明显)。