Spec-Zone.ru › Fish 3.2

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

Синопсис

math [-sN | --scale=N] [-bBASE | --base=BASE] [--] EXPRESSION

Описание

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

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

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

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

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

  • -sN или --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 как входные данные.

Значения возврата

Если выражение успешно оценивается и не переполняется/не недополняется или не возвращает 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 — факториал
  • floor
  • ln — логарифм по основанию е
  • log или log10 — логарифм по основанию 10
  • ncr
  • npr
  • pow(x,y) возвращает x в степени y (и может быть записано как x ^ y)
  • round — округляет до ближайшего целого числа, отходя от 0
  • sin
  • sinh
  • sqrt
  • tan
  • tanh

Все тригонометрические функции используют радианы.

Примеры

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.

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

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

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

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

Spec-Zone.ru

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