Вещественные типы и класс Math
| Оператор | Название | Пример | Примечание |
| + | Оператор сложения | x+y | В случае, когда операнды x и y имеют разные типы, действуют правила автоматического преобразования типов. |
| – | Оператор вычитания | x-y | |
| * | Оператор умножения | x*y | |
| / | Оператор деления | x/y | Результат является вещественным. В случае, когда операнды x и y имеют разные типы, действуют правила автоматического преобразования типов. |
| % | Оператор остатка от целочисленного деления | x%y | Возвращается остаток от целочисленного деления x на y. В случае, когда операнды x и y имеют разные типы, действуют правила автоматического преобразования типов. |
| Оператор | Название | Пример | Примечание |
| = | Оператор присваивания | v=x | Сначала вычисляется выражение x, после чего полученный результат копируется в ячейку v |
| ++ | Оператор инкремента (увеличения на 1) | v++ ++v | эквивалентно v=v+1 |
| -- | Оператор декремента (уменьшения на 1) | v-- --v | эквивалентно v=v-1 |
| += | v+=x | эквивалентно v=v+x | |
| -= | v-=x | эквивалентно v=v-x | |
| *= | v*=x | эквивалентно v=v*x | |
| /= | v/=x | эквивалентно v=v/x | |
| %= | v%=x | эквивалентно v=v%x |
Математические функции, а также константы “пи” (Math.PI) и “е” (Math.E ) заданы в классе Math, находящемся в пакете java.lang .
Для того, чтобы их использовать, надо указывать имя функции или константы, квалифицированное впереди именем класса Math.
Например, возможны вызовы Math.PI или Math.sin(x). При этом имя пакета java.lang указывать не надо – он импортируется автоматически. К сожалению, использовать математические функции без квалификатора Math, не получается, так как это методы класса.
Константы в классе Math заданы так:
public static final double E = 2.7182818284590452354;
public static final double PI = 3.14159265358979323846;
Модификатор static означает, что это переменная класса; final означает, что в классе-наследнике переопределять это значение нельзя.
В приведённой ниже таблицы величины x,y,angdeg,angrad имеют тип double, величина a – тип float, величины m, n – целые типов long или int. Математические функции возвращают значения типа double, если примечании не указано иное.
| Оператор класса Math | Примечание |
| Тригонометрические и обратные тригонометрические функции | |
| sin(x) | sin(x) - синус |
| cos(x) | cos(x) - косинус |
| tan(x) | tg(x) - тангенс |
| asin(x) | arcsin(x) - арксинус |
| acos(x) | arccos(x) - арккосинус |
| atan(x) | arctg(x) - арктангенс |
| atan2(y, x) | Возвращает угол, соответствующий точке с координатами x,y, лежащий в пределах .
|
| toRadians(angdeg) | angdeg / 180.0 * PI; - перевод углов из градусов в радианы. |
| toDegrees(angrad) | angrad * 180.0 / PI; - перевод углов из радиан в градусы. |
| Степени, экспоненты, логарифмы | |
| exp(x) | ex - экспонента |
| expm1(x) | ex-1. При x, близком к 0, даёт гораздо более точные значения, чем exp(x)-1 |
| log(x) | ln(x) – натуральный логарифм. |
| log10(x) | log10(x) – десятичный логарифм. |
| log1p(x) | ln(1+x). При x, близком к 0, даёт гораздо более точные значения, чем log(1+x) |
| sqrt(x) | - квадратный корень
|
| cbrt(x) | - кубический корень
|
| hypot(x,y) | - вычисление длины гипотенузы по двум катетам
|
| pow(x, y) | xy – возведение x в степень y |
| sinh(x) | sh(x)= – гиперболический синус
|
| cosh(x) | ch(x)= – гиперболический косинус
|
| tanh(x) | th(x)= – гиперболический тангенс
|
| Модуль, знак, минимальное, максимальное число | |
| abs(m) abs(x) | Абсолютное значение числа. Аргумент типа int, long, float или double. Результат того же типа, что аргумент. |
| signum(a) signum(x) | Знак числа. Аргумент типа float или double. Результат того же типа, что аргумент. |
| min(m,n) min(x,y) | Минимальное из двух чисел. Аргументы одного типа. Возможны типы: int, long, float, double. Результат того же типа, что аргумент. |
| max(m,n) max(x,y) | Максимальное из двух чисел. Аргументы одного типа. Возможны типы: int, long, float, double. Результат того же типа, что аргумент. |
| Округления | |
| ceil(x) | Ближайшее к x целое, большее или равное x |
| floor(x) | Ближайшее к x целое, меньшее или равное x |
| round(a) round(x) | Ближайшее к x целое. Аргумент типа float или double. Результат типа long, если аргумент double, и типа int – если float. То же, что (int)floor(x + 0.5). |
| rint(x) | Ближайшее к x целое. |
| ulp(a) ulp(x) | Расстояние до ближайшего большего чем аргумент значения того же типа (“дискретность” изменения чисел в формате с плавающей точкой вблизи данного значения). Аргумент типа float или double. Результат того же типа, что аргумент. |
| Случайное число, остаток | |
| random() | Псевдослучайное число в диапазоне от 0.0 до 1.0. При этом 0 Math.random() < 1. |
| IEEEremainder(x,y) | Остаток от целочисленного деления x/y, то есть x-y*n, где n – результат целочисленного деления |
Также имеются методы оболочечных классов Float и Double, обеспечивающие преобразование строкового представления числа в значение типа Float или Double:
Float.parseFloat(строка)
Double.parseDouble(строка)
Например, если в экранной форме имеются текстовые пункты ввода jTextField1 и jTextField2, преобразование введённого в них текста в числа может проводиться таким образом:
float f1= Float.parseFloat(jTextField1.getText());
double d1= Double.parseDouble(jTextField2.getText());
Иногда вместо класса Math ошибочно пытаются использовать пакет java.math, в котором содержатся классы BigDecimal, BigInteger, MathContext, RoundingMode. Класс BigDecimal обеспечивает работу с десятичными числами с произвольным числом значащих цифр – в том числе с произвольным числом цифр после десятичной точки. Класс BigInteger обеспечивает работу с целыми числами произвольной длины. Классы MathContext и RoundingMode являются вспомогательными, обеспечивающими настройки для работы с некоторыми методами классов BigDecimal и BigInteger.
.
- квадратный корень
- кубический корень
- вычисление длины гипотенузы по двум катетам
– гиперболический синус
– гиперболический косинус
– гиперболический тангенс