Гид по формулам

Редакция от 5 августа 2026 

Формулы в 2x2calc: полная инструкция

Формула задаётся в элементе «Результат». В качестве переменных используются ID числовых полей, переключателей, списков, мультичекбоксов и других результатов.

1. Основной принцип

Допустим, в калькуляторе есть следующие элементы:

Элемент ID Значение
Площадь area 80
Цена за м² price 1500
Монтаж install 5000

Формула результата:

area * price + install

Расчёт:

80 * 1500 + 5000 = 125000

В формулу вводится именно ID элемента, а не его название.

Правильно:

area * price

Неправильно:

Площадь * Цена

2. Требования к ID

ID — это имя переменной, используемое в формуле.

Рекомендуемый формат:

area
price
price_m2
install_cost
room_count
result_total

Для ID рекомендуется использовать:

  • латинские буквы;
  • цифры;
  • знак подчёркивания _;
  • первую позицию — латинскую букву.

Правильно:

price
price2
price_m2
room_count

Неправильно:

цена
price-m2
price.m2
2price
price m2

ID должны быть уникальными

Нельзя назначать двум элементам один и тот же ID:

price
price

Регистр символов имеет значение

Следующие ID считаются разными:

price
Price
PRICE

Рекомендуется использовать строчные латинские буквы:

price_m2

Не используйте имена функций в качестве ID

Не рекомендуется назначать элементам такие ID:

IF
MIN
MAX
ROUND
SQRT
AND
OR
NOT
TRUE
FALSE

3. Какие элементы участвуют в формулах

Числовое поле

В формулу передаётся число, введённое пользователем. Например, ID числового поля:

area

Если пользователь ввёл 75, переменная area получает значение 75. Если поле очищено, в расчёте обычно используется 0.

Ползунок

В формулу передаётся текущее значение ползунка:

length

Значение учитывает минимальное и максимальное значения, а также шаг. При шаге 0.5 возможны, например:

1
1.5
2
2.5

Выпадающий список и Radio-список

В формулу передаётся числовое значение выбранного варианта, а не его название.

Вариант Значение
Эконом 1000
Стандарт 1500
Премиум 2200

ID списка:

tariff

Если выбран вариант «Стандарт»:

tariff = 1500

Формула:

area * tariff

Checkbox

Checkbox передаёт значение «Включено» или «Выключено». Обычно:

Включено = 1
Выключено = 0

ID checkbox:

delivery

Формула:

base_price + delivery * 1500

Checkbox может сразу возвращать стоимость:

Включено = 1500
Выключено = 0

Тогда формула упрощается:

base_price + delivery

Checkbox можно использовать как коэффициент:

Включено = 1.2
Выключено = 1

Формула:

price * urgent

Мультичекбокс

В формулу передаётся сумма значений всех выбранных вариантов.

Вариант Значение
Доставка 1000
Подъём 500
Монтаж 3000

ID мультичекбокса:

options

Если выбраны доставка и монтаж:

options = 1000 + 3000 = 4000

Формула:

base_price + options

Ограничение мультичекбокса

Формуле доступна только итоговая сумма. В формуле нельзя напрямую проверить, выбран ли конкретный вариант

Если нужно отдельно проверять каждую опцию, используйте несколько отдельных checkbox. Избегайте значений, при которых разные комбинации дают одинаковую сумму.

Другой результат

Один результат может использовать ID другого результата.

ID: subtotal
Формула: area * price
ID: total
Формула: subtotal + delivery
ID: total_with_tax
Формула: total * 1.2

Самоссылка

Результат не должен ссылаться сам на себя:

ID: total
Формула: total + 100

Циклическая ссылка

Нельзя создавать взаимные ссылки:

result_a = result_b + 10
result_b = result_a + 20

Элементы, которые не участвуют в формулах

  • текстовое поле;
  • длинное текстовое поле;
  • поле даты;
  • текстовый блок;
  • изображение;
  • форма заявки;
  • горизонтальная линия.

Например, нельзя написать:

IF(city = "Москва", 1000, 2000)

Формульный движок работает с числами и логическими значениями, но не со строками и датами.

4. Запись чисел

Десятичный разделитель

Десятичная часть отделяется точкой:

1.5
0.25
12.75

Нельзя использовать десятичную запятую:

1,5

Запятая разделяет аргументы функций:

ROUND(price, 2)

Разделители тысяч

Правильно:

1000
1500000

Неправильно:

1 000
1,000
1.000

В формуле:

1234.5

При отображении калькулятор может показать:

1 234,5

Научная запись

Не следует использовать:

1e6
2.5E3

Используйте обычную запись:

1000000
2500

5. Арифметические операторы

Действие Оператор Пример
Сложение + a + b
Вычитание - a - b
Умножение * a * b
Деление / a / b
Возведение в степень ^ a ^ 2
Унарный минус - -a
Унарный плюс + +a

Умножение всегда указывается явно

Правильно:

2 * area

Неправильно:

2area

Правильно:

2 * (a + b)

Неправильно:

2(a + b)

Правильно:

(a + b) * (c + d)

Неправильно:

(a + b)(c + d)

6. Возведение в степень

Квадрат:

a ^ 2

Куб:

a ^ 3

Обратное число:

a ^ -1

Квадратный корень через степень:

a ^ 0.5

Предпочтительный вариант:

SQRT(a)

Последовательность вычисления степеней

Формула:

2 ^ 3 ^ 2

понимается как:

2 ^ (3 ^ 2)

Результат:

512

Отрицательное основание

Формула:

-2 ^ 2

понимается как:

-(2 ^ 2)

Результат:

-4

Чтобы получить 4:

(-2) ^ 2

7. Скобки и порядок вычислений

Используются круглые скобки:

()

Пример:

(a + b) * c

Порядок выполнения операций:

  1. выражения в скобках и функции;
  2. возведение в степень ^;
  3. унарные операторы +, -, !, NOT;
  4. умножение и деление;
  5. сложение и вычитание;
  6. сравнения;
  7. AND;
  8. OR.

Формула:

a + b * c

равна:

a + (b * c)

Если нужно сначала выполнить сложение:

(a + b) * c

8. Операторы сравнения

Проверка Оператор
Равно =
Не равно !=
Больше >
Меньше <
Больше или равно >=
Меньше или равно <=

Примеры:

area = 100
area != 100
area > 100
area < 100
area >= 100
area <= 100

Для равенства используется один знак

Правильно:

area = 100

Неправильно:

area == 100

Не используйте цепочки сравнений

Неправильно:

10 < area < 100

Правильно:

AND(area > 10, area < 100)

или:

area > 10 AND area < 100

9. Логические операторы

Действие Словесная запись Символьная запись
И AND &&
ИЛИ OR ||
НЕ NOT !

Названия функций и логических операторов нечувствительны к регистру:

AND
and
And

Логическое И

area >= 80 AND install > 0
area >= 80 && install > 0
AND(area >= 80, install > 0)

Логическое ИЛИ

tariff = 1500 OR tariff = 2000
tariff = 1500 || tariff = 2000
OR(tariff = 1500, tariff = 2000)

Логическое НЕ

NOT delivery
!delivery

Для сравнения используйте скобки:

NOT(delivery = 1)
!(delivery = 1)

10. Что считается истиной и ложью

0 = ложь
любое ненулевое число = истина

Checkbox со значениями 1 и 0 можно использовать так:

IF(delivery, 1500, 0)

Это аналогично:

IF(delivery != 0, 1500, 0)

В числовом контексте:

истина = 1
ложь = 0

Вместо TRUE и FALSE используйте:

1
0

11. Функция IF

Синтаксис:

IF(условие, значение_если_да, значение_если_нет)

Пример:

IF(area >= 80, 5000, 0)

Несколько условий

IF(AND(area >= 80, install > 0), 5000, 0)

Один из нескольких вариантов

IF(OR(tariff = 1500, tariff = 2000), 1, 0)

Вложенные IF

IF(
area <= 50,
area * 1000,
IF(
area <= 100,
area * 900,
area * 800
)
)

Одной строкой:

IF(area <= 50, area * 1000, IF(area <= 100, area * 900, area * 800))

IF с двумя аргументами

IF(condition, value)

При ложном условии результат будет 0. Для ясности лучше писать:

IF(condition, value, 0)

12. Функция MIN

Возвращает наименьшее число:

MIN(a, b)

Ограничение сверху:

MIN(price, 10000)

Несколько аргументов:

MIN(a, b, c, d)

Не используйте:

MIN()

13. Функция MAX

Возвращает наибольшее число:

MAX(a, b)

Минимальная стоимость заказа – 5000:

MAX(area * price, 5000)

Несколько аргументов:

MAX(a, b, c, d)

Не используйте:

MAX()

14. Функция ROUND

Синтаксис:

ROUND(число, количество_знаков)

Округление после запятой

ROUND(value, 0)
ROUND(value, 1)
ROUND(value, 2)
ROUND(value, 3)

Пример:

ROUND(10 / 3, 2)

Результат:

3.33

Округление до десятков, сотен и тысяч

ROUND(value, -1)
ROUND(value, -2)
ROUND(value, -3)

Пример:

ROUND(1260, -2)

Результат:

1300

Допустимый диапазон

от -6 до 6

ROUND(value, 20) будет обработано как округление до шести знаков после запятой.

ROUND с одним аргументом

ROUND(value)

округляет до целого. Для ясности:

ROUND(value, 0)

Особенность отрицательных чисел

ROUND(-1.5, 0)

Результат стандартного округления JavaScript:

-1

15. Функция SQRT

Квадратный корень:

SQRT(x)

Функция принимает ровно один аргумент.

Пример:

SQRT(25)

Результат:

5

Гипотенуза:

SQRT(a * a + b * b)

При a = 3 и b = 4 результат равен 5.

Регистр не важен:

SQRT(25)
sqrt(25)
Sqrt(25)

Отрицательное подкоренное выражение

SQRT(-1)

не имеет действительного числового результата. При необходимости:

IF(x < 0, 0, SQRT(x))

16. AND и OR как функции

AND

AND(condition1, condition2, …)
AND(area >= 50, area <= 100, install > 0)

OR

OR(condition1, condition2, …)
OR(tariff = 1000, tariff = 1500, tariff = 2000)

17. Формула и округление результата

Способ 1. ROUND внутри формулы

ROUND(area * price, 2)

Округлённое число становится фактическим результатом и передаётся в последующие формулы.

Способ 2. Настройка округления элемента «Результат»

  • не округлять;
  • арифметическое округление;
  • округление вверх;
  • округление вниз;
  • до тысячных, сотых, десятых, единиц, десятков, сотен или тысяч.

Исходное значение:

12.678

может отображаться как:

12.68

Чтобы другие результаты использовали показанное значение, включите:

Использовать округлённое значение в расчётах

Если округление — часть алгоритма, используйте ROUND(). Если оно нужно только для отображения — настройку элемента «Результат».

18. Деление на ноль

a / 0

может дать бесконечность или некорректный результат. Проверяйте знаменатель:

IF(b = 0, 0, a / b)

Можно использовать другое безопасное значение:

IF(b = 0, -1, a / b)

19. Расчёт процентов

Прибавить 20%

price * 1.2
price + price * 20 / 100

Вычесть скидку

price * (1 — discount / 100)

При скидке 15%:

price * 0.85

Процент от числа

amount * percent / 100

20. Типовые формулы

Цена по площади

area * price_m2

Цена по количеству

quantity * unit_price

Цена плюс услуга

area * price_m2 + delivery

Минимальная стоимость

MAX(area * price_m2, 5000)

Максимальное ограничение

MIN(area * price_m2, 100000)

Наценка

base_price * (1 + markup / 100)

Скидка

base_price * (1 — discount / 100)

Надбавка 20%

price * 1.2

Условная доплата

IF(area >= 80, 5000, 0)

Доплата при двух условиях

IF(AND(area >= 80, install > 0), 5000, 0)

Один из нескольких тарифов

IF(OR(tariff = 1500, tariff = 2000), 5000, 0)

Гипотенуза

SQRT(a * a + b * b)

Среднее арифметическое

(a + b + c) / 3

Ограничение диапазоном

MIN(MAX(value, min_value), max_value)

Модуль без ABS

IF(x < 0, -x, x)

Ступенчатая цена

Первые 50 единиц по 1000, остальные по 800:

IF(
quantity <= 50,
quantity * 1000,
50 * 1000 + (quantity — 50) * 800
)

Три ценовых диапазона

IF(
area <= 50,
area * 1000,
IF(
area <= 100,
area * 900,
area * 800
)
)

21. Цепочка результатов

Сложный расчёт лучше разделять на промежуточные результаты.

ID: subtotal
Формула:
area * price_m2 + options
ID: discount_amount
Формула:
subtotal * discount / 100
ID: total
Формула:
subtotal — discount_amount
  • формулы легче читать;
  • проще находить ошибки;
  • можно показывать промежуточные значения;
  • один результат можно использовать в нескольких формулах.

22. Что формульный движок пока не поддерживает

ABS()
CEIL()
FLOOR()
SIN()
COS()
TAN()
LOG()
LN()
EXP()
PI()
RANDOM()
MOD()
  • строки и сравнение текста;
  • даты;
  • массивы;
  • проверка отдельного варианта мультичекбокса;
  • оператор остатка %;
  • оператор степени **;
  • равенство ==;
  • неравенство <>;
  • тернарный оператор;
  • квадратные и фигурные скобки;
  • русские названия функций;
  • комментарии, единицы измерения и денежные символы внутри формул;
  • неявное умножение.

Не будут работать:

ABS(x)
PI()
price * 20%
area == 10
2 ** 3
IF(city = "Москва", 1, 0)
1000 ₽
10 м²

23. Типичные ошибки

Название вместо ID

Неправильно:

Площадь * Цена

Правильно:

area * price

Десятичная запятая

Неправильно:

1,25 * price

Правильно:

1.25 * price

Пропущено умножение

Неправильно:

2area

Правильно:

2 * area

Двойное равенство

Неправильно:

tariff == 1500

Правильно:

tariff = 1500

Неверный регистр ID

Неправильно:

Price * area

Правильно:

price * area

Ссылка на текстовое поле

Неправильно:

IF(city, 1000, 2000)

Правильно:

Текстовые поля не участвуют в формулах.

Неподдерживаемая функция

CEIL(price)

Используйте настройку округления вверх у элемента «Результат».

Циклические результаты

result1 = result2 + 100
result2 = result1 + 100

Разорвите цикл и используйте независимое исходное поле или промежуточный результат.

24. Как проверять сложную формулу

Собирайте сложную формулу постепенно.

MAX(area * tariff + options + IF(urgent, 5000, 0), 15000) * (1 — discount / 100)

Сначала:

area * tariff

Затем:

area * tariff + options

Затем:

area * tariff + options + IF(urgent, 5000, 0)

Затем:

MAX(area * tariff + options + IF(urgent, 5000, 0), 15000)

И только потом полную формулу.

Что нужно проверить

  1. минимальные значения;
  2. максимальные значения;
  3. нули;
  4. каждый вариант списка;
  5. включённый и выключенный checkbox;
  6. сочетания мультичекбокса;
  7. значения на границе условия, ниже и выше неё;
  8. режим просмотра;
  9. публичную страницу;
  10. embed-калькулятор.

25. Краткая памятка

Сложение: a + b
Вычитание: a — b
Умножение: a * b
Деление: a / b
Степень: a ^ b
Квадратный корень: SQRT(a)

Равно: a = b
Не равно: a != b
Больше: a > b
Меньше: a < b
Больше или равно: a >= b
Меньше или равно: a <= b

И: a AND b
a && b
AND(a, b)

ИЛИ: a OR b
a || b
OR(a, b)

НЕ: NOT(a)
!(a)

Условие: IF(condition, yes, no)
Минимум: MIN(a, b)
Максимум: MAX(a, b)
Округление: ROUND(a, digits)
Квадратный корень: SQRT(a)

Основные правила

  • десятичный разделитель — точка;
  • аргументы функций разделяются запятыми;
  • равенство обозначается одним знаком =;
  • умножение всегда обозначается *;
  • переменные — это ID элементов;
  • ID чувствительны к регистру;
  • формулы работают с числами и логическими значениями;
  • для сложных расчётов используйте промежуточные результаты.