2016-03-21 4 views
11

Ich benutze Visual Studio 2015 auf Windows 10, ich bin immer noch ein neuer Coder, ich habe gerade angefangen, C# zu lernen, und während ich dabei war, habe ich die Mathematik entdeckt und wurde nur mit ihm Spaß haben, bis die Konsole ausgegeben: „∞“C#: Die Konsole gibt Infinte aus (∞)

es ist eine Konsole-Anwendung

Hier ist der Code:

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

Warum ist das passiert? normalen Rechner mit dem Ergebnis: 96985953901866,7

+1

Sie versuchen, '4.7^894' zu berechnen, das ein bisschen zu groß ist, um mit einem' double' fertig zu werden. –

Antwort

19

Weil Sie tun

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

statt

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

Sie Umkehren Basis mit Exponenten!

Und Sie sollten wirklich Ihre Variablen wiederverwenden, anstatt alles neu zu berechnen! (Hätten Sie die Variablen wiederverwendet, wäre das Problem deutlicher geworden).