Spec-Zone.ru › Fish 3.3

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

Резюме

math [-sN | --scale=N] [-bBASE | --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 является ошибкой.

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

  • -sN или --scale=N устанавливают масштаб результата. N должно быть целым числом или словом «max» для максимального масштаба. Масштаб 0 приводит к округлению результатов до ближайшего целого числа. Таким образом, 3/2 возвращает 1, а не 2, которое 1.5 обычно округлял бы. Это для совместимости с bc, который был основой этой команды до fish 3.0.0. Значения масштаба больше нуля приводят к округлению результата по обычным правилам до указанного количества десятичных знаков.
  • -b BASE или --base BASE устанавливают числовую систему, используемую для вывода (math всегда понимает шестнадцатеричные числа как вход). В настоящее время он понимает «hex» или «16» для шестнадцатеричных и «octal» или «8» для восьмеричных и подразумевает масштаб 0 (другие масштабы вызывают ошибку), поэтому он обрезает результат до целого числа. В будущем это может измениться. Шестнадцатеричные числа будут напечатаны с префиксом 0x. Восьмеричные числа будут иметь префикс 0 и не понимаются math как входные данные.

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

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

Синтаксис

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

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

Операторы

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

  • + для сложения и - для вычитания.
  • * или x для умножения, / для деления. (Обратите внимание, что * — это символ подстановки, и его нужно экранировать или заключать в кавычки, x нужно сопровождать пробелом, иначе он будет выглядеть как 0x шестнадцатеричное обозначение.)
  • ^ для возведения в степень.
  • % для остатка от деления.
  • ( и ) для группировки. (Их необходимо экранировать или заключать в кавычки, потому что () обозначает подстановку команд.)

Все они используются посимвольно — 5 + 2, а не + 5 2.

Константы

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

  • e — число Эйлера.
  • pi — π. Вы это знаете. Половина от Тау.
  • tau. Равно 2π или числу радиан в окружности.

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

Функции

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

  • abs — абсолютное значение с положительным знаком.
  • acos — арккосинус.
  • asin — арксинус.
  • atan — арктангенс.
  • atan2 — арктангенс двух переменных.
  • bitand, bitor и bitxor для выполнения побитовых операций. Они отбросят любые дробные части и интерпретируют остаток как целое число.
  • ceil — округляет число до ближайшего целого в большую сторону.
  • cos — косинус.
  • cosh — гиперболический косинус.
  • exp — экспоненциальная функция по основанию е.
  • fac — факториал — также известный как x! (x * (x - 1) * (x - 2) * ... * 1)
  • floor — округляет число до ближайшего целого в меньшую сторону.
  • ln — логарифм по основанию е.
  • log или 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.

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

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

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

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

Spec-Zone.ru

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