Finden Sie Cube Wurzel einer Zahl Mit System.Math.Pow () - Methode in C#

Während ein Programm schreiben kam ich über das finden der cube Wurzel einer Zahl in einer meiner Funktionen.

wenn ich den code unten, ich war immer ein falscher Wert für den cube root (1 war immer, gedruckt für n = 64).

public static void cubicPairs(double n)
{
    double root = (System.Math.Pow(n, (1/3)));
    Console.WriteLine(root);
}

Nun, nachdem ich änderte den code leicht auf dieser,

public static void cubicPairs(double n)
{
    double root = (System.Math.Pow(n, (1.0/3.0))); //Changed how second parameter is passed
    Console.WriteLine(root);
}

Bekam ich root = 3.9999999999999996 (beim Debuggen), aber die Methode war, den Druck 4 (was richtig ist).

Warum gibt es einen Unterschied zwischen den beiden Werten, und wenn dies hat zu tun mit dem zweiten parameter, um die System.Math.Pow() Methode (ich.e 1.0/3.0 was ist eine rekursive Wert), was soll ich verwenden, zu finden, cube root, so daß ich 4 (beim Debuggen) eher als 3.9999999999999996?

Ich denke, dass im ersten Fall das Ergebnis von 1/3 ist ein int, ist so dass Sie endete damit, dass n^0
aber der parameter einen double-Wert und nicht ein int. Wenn es immer nach int umgewandelt, nicht haben sollte ich bekommen irgendwelche Fehler oder so?
Nein, da int implizit konvertierbar double.
vereinbart, aber sollte es kommen implizit in int konvertiert, wenn 1/3 soll nicht eine ganze Zahl sein, wie Sie die Methode-definition?
(1/3) ist eine ganze Zahl, was auch immer es sein soll. Die Laufzeit ist in der Lage, es zu konvertieren, was Sie wollen, also tut es.

InformationsquelleAutor gkb | 2014-09-09

Schreibe einen Kommentar