Справка по использованию формул в модулях «STARt: Калькулятор услуг» и «STARt: Калькулятор PRO»
Справка по использованию формул в модулях «START: Калькулятор услуг» И «START: Калькулятор PRO»
Что такое формула
Формула – это математическое выражение, согласно которому калькулятор будет вычислять итоговую стоимость.
Формула состоит из символов математических операций, параметров, известных заранее, и переменных, которые мы получаем от пользователя, когда он заполняет поля калькулятора.
Пример:
Нам требуется рассчитать стоимость возведения забора на прямоугольном земельном участке. Известна стоимость погонного метра забора – 3 000 руб. Планируется, что ширину и длину участка укажет пользователь, заполнив соответствующие поля калькулятора.
В таком случае стоимость будет рассчитываться по формуле:
(«Ширина участка в метрах» + «Длина участка в метрах») * 2 * 3000
То есть сначала мы находим периметр земельного участка в метрах (сумма его сторон, умноженная на 2), а затем умножаем его на стоимость погонного метра (3000).
Реализация на стороне калькулятора
«Ширина участка в метрах», «Длина участка в метрах» – нужно создать эти два параметра в нашем калькуляторе. К примеру, их тип – ползунок http://joxi.ru/gmvqegLIqV4oJr.
Чтобы передать эти параметры в формулу, нам нужно знать их ID. Перейдите в раздел с параметрами калькулятора. ID указаны тут http://joxi.ru/BA0p4vyfMaEnwA.
Теперь запишем формулу с использованием ID.
({1539} + {1540}) * 2 * 3000
Где 1539 – это ID параметра «Ширина участка в метрах», а 1540 - ID параметра «Длина участка в метрах». Фигурные скобки {} показывают калькулятору, что речь идет о переменной, а не о простом числе.
Таким образом, чтобы передать параметр в калькулятор, нужно скопировать его ID и заключить в фигурные скобки – вот так {ID}.
Доступные операции
Калькулятор поддерживает все арифметические действия и основные математические функции, благодаря чему возможно реализовать даже самые сложные формулы расчета.
Базовые операции
Символ |
Название |
Пример |
+ |
Сложение |
1.2 + 2 = 3.2 |
- |
Вычитание |
7 – 4 = 3 |
* |
Умножение |
6 * 8 = 48 |
/ |
Деление |
100 / 5 = 20 |
() |
Группировка |
(1 + 2) * 3 = 9 |
^ |
Возведение в степень |
2 ^ 3 = 8 |
sqrt() |
Извлечение квадратного корня |
sqrt(25) = 5 |
% |
Получение остатка от деления |
8 % 3 = 2 |
Некоторые другие математические функции
Символ |
Название |
Пример |
sin() |
Синус |
sin(45 deg) = 0.85090352453 |
cos() |
Косинус |
cos(pi) = -1 |
tan() |
Тангенс |
tan(45 deg) = 1.61977519054 |
log() |
Логарифм |
log(e) = 1 |
! |
Факториал |
5! = 120 |
Математические константы
Символ |
Название |
pi |
Число Пи |
e |
Основание натурального логарифма |
i |
Мнимая единица |
Полный перечень доступных функций https://mathjs.org/docs/reference/functions.html. Для использования уберите приставку math. перед названием функции.
Особенности составления формул
Например, нам нужно извлечь кубический корень числа. Данное действие выполняет функция math.cbrt(x). Теперь вставим ее в формулу, отбросив math. из названия функции и подставив вместо x нужное число или переменную - пусть это будет число 27:cbrt(27)
В качестве результата калькулятор вернет число 3.
- В числах в качестве десятичного разделителя должна использоваться точка. Например, 2,51 – неправильно, верная запись - 2.51
- Запись выражения с пробелами и без них - равнозначна. То есть, (1 + 2) * 3 – это тоже самое что и (1+2)*3
- Аналогично можно использовать перенос строки – на работу формулы это не повлияет. Например, (1+2)*3+4*3.5 можно записать так:
(1+2)*3
+
4*3.5
Такая запись может упростить чтение сложных формул, логические части которых можно разнести в разные строки.
Условия
Функционал решения позволяет задавать условия, в зависимости от которых будет выполняться та или иная часть формулы.
Для этого нужно использовать конструкцию <if id="" value="" type=""></if>
- id – это ID параметра, от значения которого зависит выполнение условия.
- value - слово, словосочетание или число, с которым мы сравниваем выбранный пользователем вариант.
- type – может принимать значения = (равно), != (не равно), > (больше), < (меньше).
Пример:
<if id="795" value="Двустворчатое" type="!=">({797} + {800}) * 5</if>
Расшифровка: если значение параметра с ID 795 не равно «Двустворчатое», то следует выполнить выражение ({797} + {800}) * 5.
Вернемся к знакомому нам примеру с расчетом стоимости забора:
Добавим в калькулятор еще один параметр под названием «Материал забора» с ID 1541 и двумя вариантами выбора: «Кирпич» и «Профлист». Стоимость метра забора из кирпича – 3 000 руб., а из профлиста – 1 000 руб.
<if id="1541" value="Кирпич" type="=">
({1539} + {1540}) * 2 * 3000
</if>
<if id="1541" value="Профлист" type="=">
({1539} + {1540}) * 2 * 1000
</if>
Внимание! Условия поддерживают вложенность. То есть при необходимости можно реализовать конструкцию, где одно условие находится внутри другого:
<if>