Поддерживаемые функции и константы
Ниже перечислено всё, что принимает парсер; любой другой токен отклоняется из соображений безопасности.
| Категория | Доступно | Пример |
|---|---|---|
| Тригонометрия | sin, cos, tan, asin, acos, atan | sin(pi/2) = 1 (радианы) |
| Корни и модуль | sqrt, cbrt, abs | sqrt(16) = 4; cbrt(27) = 3 |
| Логарифмы и экспонента | ln, log (по основанию 10), log2, exp | log(1000) = 3; ln(e) = 1 |
| Округление | floor, ceil, round | floor(2.7) = 2; ceil(2.1) = 3 |
| Два аргумента | min(a, b), max(a, b) | max(3, 7) = 7 |
| Константы | pi, e, tau | tau = 2 x pi = 6.283185... |
| Операторы | + - * / % ^ и скобки | 2^10 = 1024; 10 % 3 = 1 |
- Единица измерения угла действует только на тригонометрические функции: в режиме градусов аргументы sin/cos/tan переводятся из градусов, а результаты asin/acos/atan выдаются в градусах.
- Здесь log означает десятичный логарифм; для натурального логарифма используйте ln, а для основания 2 — log2.
- Парсер работает как белый список безопасности: выражения никогда не передаются в eval, а нераспознанный идентификатор делает всё выражение недопустимым, вместо того чтобы угадывать смысл.
- Точность ограничена арифметикой с плавающей точкой двойной точности (около 15-16 значащих цифр); мелкие артефакты округления вроде 0.30000000000000004 вместо 0.1 + 0.2 — неотъемлемое свойство такой арифметики.
Что такое инженерный калькулятор?
Инженерный калькулятор вычисляет математические выражения, выходящие за рамки простой арифметики: тригонометрию, логарифмы, экспоненты, корни и константы. Этот калькулятор принимает выражение целиком в виде текста и применяет стандартный порядок действий — сначала скобки, затем степени, потом умножение, деление и остаток, и наконец сложение и вычитание (PEMDAS/BODMAS).
Поддерживаемые функции: sin, cos, tan и обратные к ним asin, acos, atan; sqrt (квадратный корень) и cbrt (кубический корень); abs (модуль числа); ln (натуральный логарифм), log (десятичный логарифм), log2 (логарифм по основанию 2) и exp (число e в степени); floor, ceil и round; а также функции двух аргументов min(a, b) и max(a, b). Поддерживаемые константы: pi (3.14159...), e (2.71828...) и tau (2 x pi). Поддерживаемые операторы: + - * / % (остаток) и ^ (степень), плюс скобки и унарный минус.
Выражение обрабатывает безопасный парсер с белым списком: ввод разбивается на токены и сверяется с фиксированным перечнем разрешённых функций, констант, чисел и операторов, а всё, что в этот перечень не входит, отклоняется. Калькулятор никогда не передаёт ваш ввод в функцию eval движка JavaScript, поэтому выполнение произвольного кода исключено — неизвестные имена просто не дают результата.
Настройка единицы измерения угла управляет тригонометрией: в режиме градусов аргументы sin, cos и tan трактуются как градусы, а результаты asin, acos и atan возвращаются в градусах. В режиме радиан (математическое значение по умолчанию) все углы измеряются в радианах.
Как пользоваться инженерным калькулятором
- Введите выражение, например: sin(pi/6) + sqrt(16) * 2^3. Аргументы функций записываются в скобках; умножение нужно указывать явно знаком * (пишите 2*pi, а не 2pi).
- Перед вычислением тригонометрических функций выберите единицу измерения угла — радианы или градусы. Значение sin(30) в режиме градусов равно 0.5, а в режиме радиан — примерно -0.988.
- Посмотрите результат. Очень большие и очень малые значения выводятся в экспоненциальной записи (e-нотации).
- Если результат не появился, проверьте баланс скобок, правильность имён функций и отсутствие неявного умножения — парсер с белым списком отклоняет всё, что не распознаёт.
Порядок действий (PEMDAS)
Выражения вычисляются в таком порядке: скобки (начиная с самых внутренних), затем применение функций, затем возведение в степень ^ (правоассоциативное), затем унарный минус, затем * / и % слева направо, и наконец + и - слева направо. Это соответствует стандартному соглашению PEMDAS/BODMAS, принятому в математике.
Разбор примера: sin(pi/6) + sqrt(16) * 2^3 в режиме радиан. Шаг 1 — скобки и функции: pi/6 = 0.523599 и sin(0.523599) = 0.5; sqrt(16) = 4. Шаг 2 — степень: 2^3 = 8. Шаг 3 — умножение выполняется раньше сложения: 4 * 8 = 32. Шаг 4 — сложение: 0.5 + 32 = 32.5.
Два соглашения, о которых стоит помнить: возведение в степень правоассоциативно, поэтому 2^3^2 = 2^(3^2) = 2^9 = 512, а не (2^3)^2 = 64; а оператор % означает остаток от деления (взятие по модулю), поэтому 10 % 3 = 1 — это не проценты.
Типичные ошибки
- Вычисление тригонометрии в неверных единицах угла: sin(30) равно 0.5 только в режиме градусов, а в радианах sin(30) составляет примерно -0.988.
- Запись неявного умножения вида 2pi или 3(4+1) — парсер требует явного знака *: 2*pi, 3*(4+1).
- Ожидание, что % означает проценты: это оператор остатка, поэтому 50 % 8 = 2; чтобы взять 50 процентов от 8, напишите 0.5*8.
- Неверное понимание приоритета операций: в выражении -3^2 сначала выполняется возведение в степень, и результат равен -9; для получения 9 пишите (-3)^2.
- Предположение о левой ассоциативности степеней: 2^3^2 — это 2^(3^2) = 512, а не 64.
Часто задаваемые вопросы
Какие функции поддерживает этот инженерный калькулятор?
Тригонометрические функции sin, cos, tan и обратные asin, acos, atan; корни sqrt и cbrt; abs; логарифмы ln (натуральный), log (десятичный) и log2; exp; функции округления floor, ceil и round; функции двух аргументов min и max; константы pi, e и tau; а также операторы + - * / % ^ и скобки. Всё, что не входит в этот перечень, отклоняется парсером с белым списком.
Как переключаться между градусами и радианами?
Используйте переключатель единицы измерения угла. В режиме градусов функции sin, cos и tan трактуют свои аргументы как градусы, а обратные функции возвращают градусы; в режиме радиан всё считается в радианах — это математическое значение по умолчанию. Одно и то же выражение может дать разные результаты в двух режимах: sin(30) равно 0.5 в градусах, но примерно -0.988 в радианах.
Какой порядок действий использует калькулятор?
Стандартное соглашение PEMDAS: сначала скобки, затем функции, затем возведение в степень (правоассоциативное), затем унарный минус, затем умножение, деление и остаток слева направо, и наконец сложение и вычитание слева направо. Поэтому 1 + 2 * 3^2 = 1 + 2 * 9 = 19, а 2^3^2 = 2^9 = 512.
Почему моё выражение не даёт результата?
Парсер принимает только токены из белого списка. Частые причины: неявное умножение (пишите 2*pi, а не 2pi), несбалансированные скобки, неизвестные имена функций (перечень поддерживаемых фиксирован), недопустимая математика вроде квадратного корня из отрицательного числа или деления, дающего бесконечность, либо выражения длиннее 300 символов. Отклонение сделано намеренно: калькулятор никогда не угадывает и никогда не выполняет произвольный код.
Что делает оператор %?
Он вычисляет остаток от деления (операция взятия по модулю): 10 % 3 = 1, потому что 10 = 3 x 3 + 1. Проценты он не считает. Чтобы вычислить процент, используйте умножение: 15 % от 80 — это 0.15*80 = 12.
Безопасно ли вводить в поле выражения что угодно?
Да. Ввод обрабатывается написанным вручную токенизатором с белым списком и вычислителем по алгоритму сортировочной станции; он никогда не передаётся в eval JavaScript или иной механизм выполнения кода. Токены вне фиксированного белого списка чисел, перечисленных функций, констант и операторов приводят к тому, что выражение отклоняется целиком.
Источники
- ISO 80000-2:2019. Quantities and units — Part 2: Mathematics (standard notation for functions, logarithms and angular measure).
- Abramowitz M, Stegun IA (eds). Handbook of Mathematical Functions. National Bureau of Standards, 1964 (definitions of elementary transcendental functions).
- Weisstein, Eric W. "Precedence." MathWorld — A Wolfram Web Resource. mathworld.wolfram.com.