Математичні функції в PowerShell.
Досить часто при написанні скриптів доводиться використовувати математичні функції - підрахувати суму, округлити результат і т.п. Звичайно, базові операції, такі як додавання, віднімання, множення і ділення, безпосередньо вбудовані в PowerShell і не вимагають додаткових дій.
А ось для більш складних математичних операцій доведеться задіяти статичний клас [math]. У цей клас входить близько 30 властивостей і методів, за допомогою яких можна виробляти різні математичні дії. Для початку виведемо ці методи командою:
[math] | Get-Member -Static
Ну а тепер розглянемо їх все по порядку.
Константи
Почнемо з двох властивостей, E і PI. Як ви напевно здогадалися, це математичні константи. PI дорівнює відношенню довжини кола до довжини її діаметру, E - основа натурального логарифма. Вивести їх значення можна командою:
[math] :: PI
[math] :: E
Ступені, коріння і логарифми
Переходимо до методів.Метод :: Pow (x, y) зводить число х в ступінь у, наприклад:
[math] :: Pow (3,2) повертає 9
Метод :: Sqrt ( x) обчислює квадратний корінь з числа x, наприклад:
[math] :: Sqrt (9) повертає 3
Метод :: Exp (x) служить тільки для одного - піднесення до степеня x числа E. Наприклад так зведемо E в квадрат:
[math] :: Exp (2)
а так в куб:
[math] :: Exp (3)
Продовжуючи тему числа E, розглянемо ще парочку методів.Метод :: Log (x) обчислює натуральний логарифм числа x (логарифм з основою e), а метод :: Log10 (x) - десятковий логарифм (логарифм з основою 10). Наприклад:
[math] :: Log (2)
[math] :: Log10 (2)
Округлення
Округлення - досить часто зустрічається операція. Метод :: Round (x, y) округлює число x, а y задає потрібну кількість знаків після коми.Наприклад:
[math] :: Round (1234.5678, 2) повертає 1234.56
[math] :: Round (1234.5678, 0) повертає одна тисяча двісті тридцять чотири
Зверніть увагу на правила округлення:
[math] :: Round (12.345, 2) повертає 12.34
[math] :: Round (12.346, 2) повертає 12.35
Метод :: Truncate (x) також можна використовувати для округлення числа x, проте на відміну від попереднього методу округлення проводиться дуже грубо - шляхом відкидання всіх знаків після коми.Наприклад:
[math] :: Truncate (1.2) повертає 1
[math] :: Truncate (1.8) повертає 1
[math] :: Truncate (-1.2) повертає -1
[math] :: Truncate (-1.8) повертає -1
І ще два методу округлення. Метод :: Ceiling (x) округлює число х в більшу сторону до найближчого цілого значення. Наприклад:
[math] :: Ceiling (1.2) повертає 2
[math] :: Ceiling (1.8) повертає 2
[math] :: Ceiling (-1.2) повертає -1
[math] :: Ceiling (-1.8) повертає -1
Метод :: Floor (x) також округлює число до найближчого цілого значення, але в меншу сторону. Наприклад:
[math] :: Floor (1.2) повертає 1
[math] :: Floor (1.8) повертає 1
[math] :: Floor (-1.2) повертає -2
[math] :: Floor (-1.8) повертає -2
Порівняння
Є в класі [math] пара методів для порівняння. Наприклад метод :: Min (x, y) повертає найменше, а метод :: Max (x, y) - найбільша з двох чисел:
[math] :: Min (1,2) повертає 1
[math] :: Max (1,2) повертає 2
[math] :: Min (1, -2) повертає -2
А метод :: Equals (x, y) порівнює числа х і y і повертає True, якщо числа рівні і False, якщо не рівно.Наприклад:
[math] :: Equals (1,2) повертає False
[math] :: Equals (2,2) повертає True
Важливо пам'ятати, що для порівняння x і у повинні мати один тип даних. До примірки, для оператора Equals 2 (int32) не дорівнює 2.0 (double) або "2" (string):
[math] :: Equals (2,2.0) повертає False
[math ] :: Equals (2, "2") повертає False
Абсолютне значення і знак числа
метод :: Abs (x) повертає абсолютне значення числа х, т.е. значення без урахування знака. Наприклад:
[math] :: Abs (10) повертає 10
[math] :: Abs (-10) повертає 10
Метод :: Sign (x) повертає значення, що визначає знак числа х - 1 якщо число позитивне, -1 якщо число негативне і 0, якщо x дорівнює 0 . Наприклад:
[math] :: Sign (20) повертає 1
[math] :: Sign (0) повертає 0
[math] :: Sign (-10) повертає -1
В якості x можна передавати не тільки окремі числа, а й вираження:
[math] :: Sign (10-15) повертає -1
[math] :: Sign (-1 * 2 + 2) повертає 0
Різне
Тепер розглянемо деякі специфічні функції, які швидше за все вам ніколи не знадобляться