2016-03-21 12 views
11

Sto usando Visual Studio 2015 su Windows 10, sono ancora un nuovo codificatore, ho appena iniziato a imparare C#, e mentre ero nel processo, ho scoperto la classe Math ed è stato solo divertirsi con esso, fino alla console emesso: "∞"C#: la console sta emettendo infinte (∞)

si tratta di un'applicazione console

Ecco il codice:

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 = ∞*/ 

Perché succede questo? usando la calcolatrice normale, il risultato è: 96985953901866,7

+1

Si sta tentando di calcolare '4.7^894', che è un po 'troppo grande per un' double' con cui fare i conti. –

risposta

19

Perché si sta facendo

var subject = Math.Pow(l, k); 

invece di

var subject = Math.Pow(k, l); 

Stai invertendo base con esponente!

E si dovrebbe davvero riutilizzare le variabili, invece di ricalcolare tutto! (Avevi riutilizzato le variabili, il problema sarebbe stato più evidente).

Problemi correlati