Spec-Zone.ru › Fish 3.5

math - выполнение математических вычислений

Резюме

math [(-s | --scale) N] [(-b | --base) BASE] EXPRESSION ...

Описание

math выполняет математические вычисления. Оно поддерживает простые операции, такие как сложение, вычитание и т. д., а также функции, такие как abs(), sqrt() и ln().

По умолчанию вывод представляет собой число с плавающей точкой с отброшенными нулями в конце. Чтобы получить фиксированное представление, можно использовать опцию --scale, включая --scale=0 для целочисленного вывода.

Обратите внимание, что расширение параметров происходит до оценки выражений. Это может быть очень полезно для выполнения вычислений, включающих переменные оболочки или вывод подстановок команд, но это также означает, что скобки (()) и символ звездочки (*) символа подстановки шаблонов должны быть экранированы или заключены в кавычки. x также можно использовать для обозначения умножения, но за ним должен следовать пробел, чтобы отличить его от шестнадцатеричных чисел.

Скобки для функций необязательны — math sin pi выводит 0. Однако запятая будет связана с внутренней функцией, поэтому math pow sin 3, 5 является ошибкой, так как она пытается передать sin аргументы 3 и 5. В случае сомнений используйте скобки.

math игнорирует пробелы между аргументами и принимает ввод как несколько аргументов (внутри объединяется пробелом), поэтому math 2 +2 и math "2 +    2" работают одинаково. math 2 2 — это ошибка.

Доступны следующие опции:

-s N или --scale N

Устанавливает масштаб результата. N должно быть целым числом или словом «max» для максимального масштаба. Масштаб, равный нулю, приводит к округлению результатов до ближайшего целого числа. Так 3/2 возвращает 1, а не 2, которое 1.5 обычно округлило бы. Это для совместимости с bc, которое было основой этой команды до fish 3.0.0. Значения масштаба, большие нуля, приводят к тому, что результат округляется по обычным правилам до указанного количества десятичных знаков.

-b BASE или --base BASE

Устанавливает числовую систему, используемую для вывода (math всегда понимает шестнадцатеричные числа как вход). В настоящее время оно понимает «hex» или «16» для шестнадцатеричной системы и «octal» или «8» для восьмеричной системы и подразумевает масштаб 0 (другие масштабы приводят к ошибке), поэтому оно обрезает результат до целого числа. В будущем это может измениться. Шестнадцатеричные числа будут выводиться с префиксом 0x. Восьмеричные числа будут иметь префикс 0, но не распознаются math как вход.

-h или --help

Отображает справку по использованию этой команды.

Возвращаемые значения

Если выражение успешно вычисляется и не приводит к переполнению/потере точности или возвращает NaN, возвращаемое status значение равно нулю (успех), иначе — единице.

Синтаксис

math понимает некоторые операторы, константы, функции и, очевидно, может считывать числа.

Для чисел . всегда является символом разделителя порядка независимо от языка - 2.5, а не 2,5. Также доступны научная запись (10e5) и шестнадцатеричная система (0xFF).

math позволяет использовать подчеркивания в качестве визуальных разделителей для группирования цифр. Например, можно написать 1_000_000, 0x_89_AB_CD_EF, и 1.234_567_e89.

Операторы

math понимает следующие операторы:

+

для сложения

-

для вычитания

* or x

для умножения. * является символом подстановки шаблонов и должен быть заключен в кавычки или экранирован, x должен следовать пробел или он будет восприниматься как 0x шестнадцатеричная запись.

/

для деления

^

для возведения в степень

%

для вычисления остатка от деления

( or )

для группировки. Их необходимо экранировать или заключить в кавычки, так как () обозначает подстановку команды.

Все они используются по принципу инфиксной записи — 5 + 2, а не + 5 2.

Константы

math понимает следующие константы:

e

число Эйлера

pi

π, вы знаете это. Половина от Тау

tau

Равно 2π, или число радиан в окружности

Используйте их без ведущего $ — pi - 3 должно быть примерно 0.

Функции

math поддерживает следующие функции:

abs

абсолютное значение, со знаком плюс

acos

арккосинус

asin

арксинус

atan

арктангенс

atan2

арктангенс от двух переменных

bitand, bitor and bitxor

выполняет побитовые операции. Они отбросят любые дробные части и интерпретируют остаток как целое число.

ceil

округление числа до ближайшего целого в большую сторону

cos

косинус

cosh

гиперболический косинус

exp

экспоненциальная функция по основанию е

fac

факториал — также известен как x! (x * (x - 1) * (x - 2) * ... * 1)

floor

округление числа до ближайшего целого в меньшую сторону

ln

логарифм по основанию е

log or log10

логарифм по основанию 10

log2

логарифм по основанию 2

max

возвращает наибольшее из заданных чисел — принимает любое количество аргументов (но не менее одного)

min

возвращает наименьшее из заданных чисел — принимает любое количество аргументов (но не менее одного)

ncr

функция комбинации «из n выбрать r» — сколько подмножеств размера r можно взять из n (порядок не имеет значения)

npr

число подмножеств размера r, которое можно взять из множества из n элементов (включая различный порядок)

pow(x,y)

возвращает x в степени y (и может быть записано как x ^ y)

round

округляет до ближайшего целого, удаляя от 0

sin

синус

sinh

гиперболический синус

sqrt

квадратный корень — (также может быть записан как x ^ 0.5)

tan

тангенс

tanh

гиперболический тангенс

Все тригонометрические функции используют радианы (масштаб, основанный на пи, а не 360°).

Примеры

math 1+1 выводит 2.

math $status - 128 выводит числовой код возврата последней команды минус 128.

math 10 / 6 выводит 1.666667.

math -s0 10.0 / 6.0 выводит 1.

math -s3 10 / 6 выводит 1.666.

math "sin(pi)" выводит 0.

math 5 \* 2 или math "5 * 2" или math 5 "*" 2 все выводят 10.

math 0xFF выводит 255, math 0 x 3 выводит 0 (потому что вычисляет 0 умноженное на 3).

math bitand 0xFE, 0x2e выводит 46.

math "bitor(9,2)" выводит 11.

math --base=hex 192 выводит 0xc0.

math 'ncr(49,6)' выводит 13983816 — это число возможных комбинаций в лотерее «6 из 49».

math max 5,2,3,1 выводит 5.

Примечания по совместимости

Выпуска fish 1.x и 2.x полагались на команду bc для обработки math выражений. Начиная с fish 3.0.0, fish использует библиотеку tinyexpr и вычисляет выражения без участия внешних команд.

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

© 2022 fish-shell developers
Licensed under the GNU General Public License, version 2.
https://fishshell.com/docs/3.5/cmds/math.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API