- Класс Math для математических вычислений в C#
- Тригонометрические функции (синус, косинус, тангенс)
- Обратные тригонометрические функции (арккосинус, арксинус, арктангенс)
- Гиперболические функции (гаперболический косинус, гиперболический синус, гиперболический тангенс)
- Обратные гиперболические функции (ареакосинус, ареасинус, ареатангенс)
- Вычисление логарифмов в C#
- Методы округления чисел в C#
- Сравнение различных методов округления в C#
- Возведение в степень и извлечение корней в C#
- Прочие математические операции
- Константы класса Math
- Итого
Класс Math для математических вычислений в C#
уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.
Статический класс Math содержит ряд методов и констант для выполнения математических, тригонометрических, логарифмических и других операций. Так как класс статический, то и все его методы также являются статическими, т.е. вызывать эти методы можно без создания объекта типа Math . Рассмотрим основные методы этого класса.
Все тригонометрические, обратные тригонометрические, гиперболические и обратные гиперболические методы в C# используют значения углов измеренных в радианах
Тригонометрические функции (синус, косинус, тангенс)
Cos(x) — возвращает косинус указанного угла x . Например,
x = Math.Cos(1);//0,5403023058681398 x = Math.Cos(0.5); //0,8775825618903728 x = Math.Cos(0.75);//0,7316888688738209 x = Math.Cos(-1);//0,5403023058681398
Sin(x) — возвращает синус указанного угла x . Например,
x = Math.Sin(1);//0,8414709848078965 x = Math.Sin(0.5); //0,479425538604203 x = Math.Sin(0.75);//0,6816387600233341 x = Math.Sin(-1);//-0,8414709848078965
Tan(x) — возвращает тангенс указанного угла x . Например,
x = Math.Tan(1);//1,5574077246549023 x = Math.Tan(0.5); //0,5463024898437905 x = Math.Tan(0.75);//0,9315964599440725 x = Math.Tan(-1);//-1,5574077246549023
Обратные тригонометрические функции (арккосинус, арксинус, арктангенс)
Acos(x) — вычисляет арккосинус заданного числа. Параметр x должен находиться в диапазоне от -1 до 1. Значение, возвращаемое методом — радианы. Пример:
x = Math.Acos(1); //0 x = Math.Acos(0); //1,5707963267948966 x = Math.Acos(-1);//3,141592653589793 x = Math.Acos(0.5);//1,0471975511965979
Asin(x) — вычисляет арксинус числа. Параметр x должен находиться в диапазоне от -1 до 1. Например,
x = Math.Asin(1); //1,5707963267948966 x = Math.Asin(0); // 0 x = Math.Asin(10);//ошибка x>1 x = Math.Asin(-1);//-1,5707963267948966 x = Math.Asin(0.6);//0,6435011087932844
Atan(x) — возвращает арктангенс числа. Значение, возвращаемое методом лежит в диапазоне от -Пи/2 до +Пи/2. Например,
x = Math.Atan(1); //0,7853981633974483 x = Math.Atan(0); //0 x = Math.Atan(10);//1,4711276743037347 x = Math.Atan(-1);//-0,7853981633974483 x = Math.Atan(0.6);//0,5404195002705842
Atan2(x, y) — возвращает арктангенс для точки в декартовой системе координат с координатами ( x,y ). Например,
x = Math.Atan2(1,1); //0,7853981633974483 x = Math.Atan2(1,-1); //2,356194490192345 x = Math.Atan2(-1,1);//-0,7853981633974483 x = Math.Atan2(-1,-1);//-2,356194490192345
Этот метод возвращает значение (θ), в зависимости от того, в каком квадранте располагается точка, а именно:
При этом стоит особо отметить, что точки могут лежать и за пределами указанных квадрантов, например, когда одна из координат равна нулю. В этом случае метод работает следующим образом:
- если y равно 0, и x не является отрицательным, то θ = 0.
- если y равно 0, и x является отрицательным, то θ = π.
- если y — положительное число, а x равно 0, то θ = π/2.
- если y — отрицательное число, а х равно 0, то θ = -π/2.
- если y равен 0, и х равен 0, то θ = 0.
Гиперболические функции (гаперболический косинус, гиперболический синус, гиперболический тангенс)
Cosh(x) — вычисляет гиперболический косинус указанного угла
x = Math.Cosh(1);//1,5430806348152437 x = Math.Cosh(0.5); //1,1276259652063807 x = Math.Cosh(0.75);//1,2946832846768448 x = Math.Cosh(-1);//1,5430806348152437
Sinh(x) — вычисляет гиперболический синус указанного угла
x = Math.Sinh(1);//1,1752011936438014 x = Math.Sinh(0.5); //0,5210953054937474 x = Math.Sinh(0.75);//0,82231673193583 x = Math.Sinh(-1);//-1,1752011936438014
Tanh(x) — вычисляет гиперболический тангенс указанного угла
x = Math.Tanh(1);//0,7615941559557649 x = Math.Tanh(0.5); //0,46211715726000974 x = Math.Tanh(0.75);//0,6351489523872873 x = Math.Tanh(-1);//-0,7615941559557649
Обратные гиперболические функции (ареакосинус, ареасинус, ареатангенс)
Acosh(x) — вычисляет ареакосинус. Параметр x должен быть больше 1. Например,
x = Math.Acosh(1); //0 x = Math.Acosh(0); // ошибка - xAsinh(x) — вычисляет ареасинус. Например,
x = Math.Asinh(1);//0,881373587019543 x = Math.Asinh(0.5); //0,48121182505960347 x = Math.Asinh(0.75);//0,6931471805599453 x = Math.Asinh(-1);//-0,881373587019543Atanh(x) — вычисляет ареатангенс. Значение x должно быть в пределах от -1 до 1. Например,
x = Math.Atanh(-0.5);//-0,5493061443340549 x = Math.Atanh(0.5); //0,5493061443340549 x = Math.Atanh(0.75);//0,9729550745276566 x = Math.Atanh(-0.75);//-0,9729550745276566Вычисление логарифмов в C#
ILogB(x) — вычисляет целочисленный логарифм с основанием 2 указанного числа, то есть значение (int)log2(x) .
Log2(x) — вычисляет логарифм с основанием 2 указанного числа.
x = Math.Log2(15);//3,9068905956085187Log(x) — вычисляет натуральный логарифм (с основанием e ) указанного числа.
x = Math.Log(15);//2,70805020110221Log(x, y) — вычисляет логарифм указанного числа x по основанию y .
x = Math.Log(15, 2);//3,9068905956085187Log10(x) — вычисляет логарифм с основанием 10 указанного числа
x = Math.Log10(15);//1,1760912590556813Методы округления чисел в C#
Ceiling(x) — возвращает наименьшее целое число, которое больше или равно заданному числу
Floor(x) — возвращает наибольшее целое число, которое меньше или равно указанному числу
Round(x) — округляет значение до ближайшего целого значения; значения посередине округляются до ближайшего четного числа
Round(x, Int32 y) — округляет значение до указанного числа знаков после запятой; значения посередине округляются до ближайшего четного числа.
Round(x, Int32 y, Midpoint Rounding) — округляет значение до указанного числа дробных цифр, используя указанное соглашение о округлении
x = Math.Round(7.256, 2, MidpointRounding.ToZero);//7,25 x = Math.Round(7.256, 2, MidpointRounding.ToPositiveInfinity);//7,26 x = Math.Round(7.256, 2, MidpointRounding.ToNegativeInfinity);//7,25 x = Math.Round(7.256, 2, MidpointRounding.ToEven);//7,26Round(x, Midpoint Rounding) — округляет значение на целое число, используя указанное соглашение об округлении
x = Math.Round(7.256, MidpointRounding.ToZero);//7Truncate(x) — вычисляет целую часть заданного числа
Сравнение различных методов округления в C#
7,256 | 7,556 | 7,5 | |
Ceiling(x) | 8 | 8 | 8 |
Floor(x) | 7 | 7 | 7 |
Round(x) | 7 | 8 | 8 |
Round(x, 2) | 7,26 | 7,56 | 7,5 |
Round(x, ToZero) | 7 | 7 | 7 |
Round(x, 2, ToZero) | 7,25 | 7,55 | 7,5 |
Round(x, 2, ToPositiveInfinity) | 7,26 | 7,56 | 7,5 |
Round(x, 2, ToNegativeInfinity) | 7,25 | 7,55 | 7,5 |
Round(x, 2, ToEven) | 7,26 | 7,56 | 7,5 |
Truncate(x) | 7 | 7 | 7 |
Возведение в степень и извлечение корней в C#
Cbrt(x) — возвращает кубический корень из x .
Exp(x) — возвращает e , возведенное в указанную степень x .
x = Math.Exp(3);//20,085536923187668
Pow(x, y) — возвращает число x , возведенное в степень y .
Sqrt(x) — возвращает квадратный корень из числа x .
Прочие математические операции
Abs(x) — возвращает абсолютное значение числа
x = Math.Abs(-2.7);//2.7 x = Math.Abs(2.7);//2.7
Big Mul(Int32, Int32) — умножает два 32-битовых числа и возвращает значение в Int64 .
double x = Math.BigMul(Int32.MaxValue, Int32.MaxValue);//4,6116860141324206E+18
Если в вашей программе предполагается использование очень больших чисел, то, возможно, вам стоит обратить внимание на тип BigInteger
Bit Decrement(x) — возвращает ближайшее самое маленькое значение, которое меньше, чем x .
x = Math.BitDecrement(1);//0,9999999999999999 x = Math.BitDecrement(-1);//-1,0000000000000002
Bit Increment(Double) — возвращает наименьшее ближайшее значение, которое больше указанного значения
x = Math.BitIncrement(1);//1,0000000000000002 x = Math.BitIncrement(-1);//-0,9999999999999999
Clamp(x, min, max) — Возвращает x , ограниченное диапазоном от min до max включительно.
x = Math.Clamp(3, 5, 10);//5 x = Math.Clamp(4, 5, 10);//5 x = Math.Clamp(11, 5, 10);//10
Copy Sign(Double, Double) — возвращает значение с величиной x и знаком y .
double x = Math.CopySign(-3, 5);//3 (знак + взят у 5) x = Math.CopySign(5, -10);//-5 (знак - взят у -10)
Div Rem(Int32, Int32, Int32) — Вычисляет частное чисел и возвращает остаток в выходном параметре
x = Math.DivRem(-3, 5, out int y);//x = 0; y = -3 x = Math.DivRem(10, 10, out int z);//x = 1; z = 0
Fused Multiply Add(x, y, z) — возвращает значение (x * y) + z, округленное в рамках одной тернарной операции.
x = Math.FusedMultiplyAdd(10.4566d, 5.56012f, 10.83789f);//68,97784156904221 x = (10.4566d * 5.56012f) + 10.83789f; //68,9778415690422
Метод Fused Multiply Add округляет значение один раз — в конце вычислений, в то время как обычное вычисление (x * y) + z вначале округляет значение, полученное в скобках, затем добавляет к полученному значению z и ещё раз округляет результат.
IEEERemainder(x, y) — Возвращает остаток от деления одного указанного числа на другое указанное число
double x = Math.IEEERemainder(10, 3);//1
Функция IEEERemainder не совпадает с оператором % , который также вычисляет остаток от деления. Различие заключается в формулах, используемых при вычислениях. Оператор действует следующим образом:
a % b = (Math.Abs(а) - (Math.Abs(b) * (Math.Floor(Math.Abs(a) / Math.Abs(b))))) * Math.Sign(a)
в то время, как метод IEEERemainder производит вычисления следующим образом:
IEEERemainder(а,b) = a-(b * Math.Round(a/b))
x = Math.IEEERemainder(-16.3, 4.1);//0,09999999999999787 x = -16.3 % 4.1;//-4,000000000000002
Max(x, y) — возвращает большее из чисел
x = Math.Max(-16.3, 4.1);//4,1 x = Math.Max(10, 5);//10
Max Magnitude(x, y) — возвращает большую величину из двух чисел двойной точности с плавающей запятой. При сравнении двух чисел не учитывается знак
x = Math.MaxMagnitude(-16.3, 4.1);//-16,3 x = Math.MaxMagnitude(10, 5);//10
Min(Byte, Byte) — возвращает меньшее из двух чисел
x = Math.Min(-16.3, 4.1);//-16,3 x = Math.Min(10, 5);//5
Min Magnitude(x, y) — возвращает меньшую величину из чисел. При сравнении не учитывается знак
x = Math.MinMagnitude(-16.3, 4.1);//4.1 x = Math.MinMagnitude(10, -5);//-5
ScaleB(x, y) — Возвращает значение x * 2^n, вычисленное наиболее эффективно.
Sign(x) — возвращает целое число, указывающее знак десятичного числа.
x = Math.Sign(-16.3);//-1 x = Math.Sign(10);//1 x = Math.Sign(0);//0
Константы класса Math
В классе Math также определены две константы — E и PI :
x = Math.E;//2,718281828459045 x = Math.PI;//3,141592653589793
Итого
В статическом классе Math содержатся функции для тригонометрических, гиперболических и прочих вычислений. Кроме этого, класс содержит ряд методов округления чисел как в большую, так и меньшую сторону, а также методы для возведения чисел в степень и вычисления корней.
уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.