HelpF.pro

Функция возведения числа в степень, в дробную степень

Для возведения числа в степень в 1С 8.х есть встроенная функция
pow(основание, степень);
Возвращает результат возведения основания в указанную степень.
* основание: число
* степень: число

Код 1C v 8.х
  //Возведем число 5 в степень 3
Результат = pow(5,3);
//Результат = 125


// Вычисление объема шара по значению радиуса
Pi=3.1415926535897932;
Радиус=3;
V=4*Pi*Pow(Радиус,3)/3;
Сообщить("Объем шара с радиусом "+Радиус+" равен "+Формат(V,"ЧДЦ=2"));

//Пример расчета сложного процента используя POW
Функция СложныйПроцент(Кредит, Ставка, Срок = 1)
Возврат Кредит*Pow(1 + Ставка/100, Срок);
КонецФункции




Возведение в дробную степень
Код 1C v 7.x
 
//В диалоговой форме - Лимит, Точность, СамоЧисло(неотрицательное) и //Степень.
Функция ЦелаяСтепень(а,б)
Результат=1;
Для К=1 По б Цикл
Результат=Результат*а;
КонецЦикла;
Возврат Результат;
КонецФункции

Функция ЗнаковПослеТочки(Стр)
Перем К;
Номер=Найти(Стр,".");
Если Номер=0 Тогда
Возврат 0;
КонецЕсли;
НачалоНулей=Номер+1;
Для К=Номер+1 По СтрДлина(Стр) Цикл
Если Сред(Стр,К,1)<>"0" Тогда
НачалоНулей=К;
КонецЕсли;
КонецЦикла;
Возврат Макс(НачалоНулей-Номер,0);
КонецФункции

Функция Знак(Ч)
Если Ч=0 Тогда
Возврат 0;
ИначеЕсли Ч>0 Тогда
Возврат 1;
Иначе
Возврат -1;
КонецЕсли;
КонецФункции

Функция Корень10ВСтепени(Ч,Степень)
Перем а,б;
Если Степень<0 Тогда
Сообщить("Степень <0");
КонецЕсли;
_10ВСтепени=ЦелаяСтепень(10,Степень);
Если _10ВСтепени>1 Тогда
а=0;
б=Лимит;
РезА=Ч-ЦелаяСтепень(а,_10ВСтепени);
РезБ=Ч-ЦелаяСтепень(б,_10ВСтепени);
Пока 1=1 Цикл
Текущее=(а+б)/2;
Рез=Ч-ЦелаяСтепень(Текущее,_10ВСтепени);
Если Знак(Рез)*Знак(РезА)<0 Тогда
б=Текущее;
Иначе
а=Текущее;
КонецЕсли;
Если (а-б<Точность) И (а-б>-Точность) Тогда
Возврат Текущее;
КонецЕсли;
КонецЦикла;
ИначеЕсли Степень=1 Тогда
Возврат Ч;
Иначе
Возврат 1;
КонецЕсли;
КонецФункции

Функция Степень_xyz(f,x,y,z)
Возврат ЦелаяСтепень(f,x)*ЦелаяСтепень(f,y)/Корень10ВСтепени(f,z);
КонецФункции

Функция ПоложительнаяДробнаяСтепень(а,ПоказательСтепени)
Перем Знак;
ЦелаяЧасть=Число(Строка(Цел(ПоказательСтепени)));
ДрЧасть=Сред(ПоказательСтепени,СтрДлина(Строка(ЦелаяЧасть))+2);
ВерхДробной=Число(СтрЗаменить(ДрЧасть,".",""));
Если ВерхДробной>0 Тогда
ДлинаДробной=ЗнаковПослеТочки(Строка(ПоказательСтепени));
Иначе
ДлинаДробной=0;
КонецЕсли;
x=ЦелаяСтепень(а,ЦелаяЧасть)*Корень10ВСтепени(ЦелаяСтепень(а,ВерхДробной),ДлинаДробной);
Возврат x;
КонецФункции

Функция Степень(а,б)
Если б<0 Тогда
НашаА=1/а;
НашаБ=-б;
Иначе
НашаА=а;
НашаБ=б;
КонецЕсли;
Сообщить(ПоложительнаяДробнаяСтепень(НашаА,НашаБ));
Возврат ПоложительнаяДробнаяСтепень(НашаА,НашаБ);
КонецФункции
Лимит=9999999;
Точность=0.001;
//<сообщил Пудель>

Опубликовано на сайте: https://HelpF.pro
Прямая ссылка: https://HelpF.pro/faq7/view/214.html