Вещественные типы и класс math
| Тип | Размер | Диапазон | Описание |
| float | 4 байта(32 бит) | 1.5*10-45..3.4*1038 | “Одинарная” точность, 7-8 значащих десятичных цифр мантиссы.Тип real*4 стандарта IEEE754 |
| double | 8 байт(64 бит) | 5*10-324..1.7*10308 | “Двойная” точность, 15..16 значащих цифр мантиссы.Тип real*8 стандарта IEEE754 |
| Оператор | Название | Пример | Примечание |
| + | Оператор сложения | 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.
Статьи к прочтению:
Java — Примитивные вещественные типы
Похожие статьи:
-
Двоичное представление вещественных чисел
Двоичные дроби Целое число 01012 можно представить в виде 01012 =0*23 + 1*22 + 0*21 + 1*20 Аналогично можно записать двоичную дробь: 11.01012 =1*21+ 1*20…
-
Вещественные числа и операции над ними
В языке С предусмотрено два типа вещественных чисел – float и double. Эти типы определяются стандартом на представление вещественных чисел в компьютерах…

.
— квадратный корень
— кубический корень
— вычисление длины гипотенузы по двум катетам
– гиперболический синус
– гиперболический косинус
– гиперболический тангенс