BillWoodruff
Как только что показал вам OriginalGriff, и PPolymorphe только что посоветовал вам, это очень простой расчет.
Вот мысль: предполагая, что у вас есть кнопка хранения памяти, вы можете заставить свой калькулятор дать своим пользователям это зинг-мятное ощущение, реализовав функциональные кнопки POW и RT, которые принимают произвольный значения как экспоненты и корневые входы.
Считать
double pow1 = Math.Pow(8.0, 4.0); // => 4096
double root1 = Math.Pow(pow1, 1.0/4.0); // => 8.0
double pow2 = Math.Pow(13.0, 5.0); // => 371293.0
double root2 = Math.Pow(pow2, 1.0 / 5.0); // => 13.000000000000002
Где вещи становятся интересными, так это в работе с отрицательными ценностями:
public double NPOW(double toraise, double raiseto)
{
return (toraise < 0)
? -1*Math.Pow(Math.Abs(toraise), raiseto)
: Math.Pow(toraise, raiseto);
}
//test
// double pow3 = NPOW(-13.0, 4.0); // => -28561.0
// double root3 = NPOW(pow3, .25); // => -13.0
В зависимости от того, что вы делаете с отрицательными входными числами, эта функция может возвращать результат NaN, который вы должны быть в состоянии обработать (и это хорошо, потому что это означает, что вы не получите ошибку). Обычные предостережения о делении на 0.0.
Имейте в виду, что если вы используете математику.Чтобы получить корни, поставив дробное значение в качестве показателя степени, вы должны быть осторожны, чтобы убедиться, что любое деление, которое вы делаете для получения этого дробного показателя, приводит к двойному, а не целому числу.