2016-03-21 12 views
11

Używam Visual Studio 2015 na Windows 10, wciąż jestem nowym programistą, właśnie zacząłem się uczyć C#, a gdy byłem w trakcie, odkryto klasę Math i dopiero zabawę z nim, aż konsola wyprowadzane: „∞”C#: Konsola wypisuje infinte (∞)

to aplikacji konsoli

Oto kod:

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

Dlaczego tak się dzieje? używając zwykłego kalkulatora wynik to: 96985953901866,7

+1

Próbujesz obliczyć '4.7^894', który jest nieco za duży, aby" podwójne "radzić sobie z. –

Odpowiedz

19

Ponieważ robisz

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

zamiast

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

Jesteś odwracanie bazę z wykładnikiem!

Powinieneś ponownie użyć swoje zmienne zamiast przeliczać wszystko! (gdybyś ponownie użył zmiennych, problem byłby bardziej widoczny).