Класс Math. Функции округления
Перед изучением данной темы рекомендуется ознакомиться со следующими темами:
Содержание
- 1. Перечень функций округления
- 2. Функция abs(). Получить абсолютное значение указанного аргумента
- 3. Функция ceil(). Наименьшее целое, которое больше или равно заданного аргумента
- 4. Функция floor(). Наибольшее целое, которое меньше или равно заданного аргумента
- 5. Функция floorDiv(). Результат целочисленного деления двух целых чисел
- 6. Функция floorMod(). Наименьшая целая оставшаяся часть от деления двух целых чисел
- 7. Функция max(). Определение большего из двух значений
- 8. Функция min(). Определение меньшего из двух значений
- 9. Функция nextAfter(). Получить следующее значение аргумента в заданном направлении
- 10. Функция nextDown(). Получить следующее значение, которое меньше значения аргумента
- 11. Функция nextUp(). Получить следующее значение от аргумента в направлении возрастания
- 12. Функция rint(). Получить ближайшее целое значение к указанному аргументу
- 13. Функция round(). Получить аргумент, округленный до ближайшего целого значения
- 14. Функция ulp(). Получить количество единиц в последнем знаке для указанного аргумента
- Связанные темы
Поиск на других ресурсах:
1. Перечень функций округления
Кроме тригонометрических и экспоненциальных функций, класс Math содержит функции для выполнения различных операций округления. Ниже приведен список этих функций
- abs() – возвращает абсолютное значение аргумента;
- ceil() – наименьшее целое, которое больше или равно указанного аргумента;
- floor() – наибольшее целое, которое меньше или равно указанного аргумента;
- floorDiv() – возвращает результат целочисленного деления двух целых чисел;
- floorMod() – получить наименьший целый остаток от деления двух целых чисел;
- max() – возвращает большее из двух значений;
- min() – возвращает меньшее из двух значений;
- nextAfter() – получить следующее значение аргумента в заданном направлении;
- nextDown() – получить следующее значение, которое меньше значения аргумента;
- nextUp() – получить следующее значение от аргумента в положительном направлении;
- rint() – получить ближайшее целое значение к указанному аргументу;
- round() – получить аргумент, округленный до ближайшего целого значения;
- ulp() – получить количество единиц в последнем знаке для указанного аргумента.
⇑
2. Функция abs(). Получить абсолютное значение указанного аргумента
С помощью функции abs() можно получить абсолютное значение аргумента. Общая форма объявления функции для базовых числовых типов:
static int abs(int value); static long abs(long value); static float abs(float value); static double abs(double value);
здесь
- value – значение одного из примитивных числовых типов.
Пример.
public class MathFunctions { public static void main(String[] args) { // Функция abs() - модуль числа int a = -8; double x = -2.432; float f = -1.43f; int aa = Math.abs(a); System.out.println("aa = " + aa); double xx; xx = Math.abs(x); System.out.println("xx = " + xx); float ff = Math.abs(f); System.out.println("ff = " + ff); } }
Результат
aa = 8 xx = 2.432 ff = 1.43
⇑
3. Функция ceil(). Наименьшее целое, которое больше или равно заданного аргумента
Общая форма объявления функции:
static double ceil(double value);
здесь
- value – аргумент, из которого нужно извлечь целое значение.
Пример.
public class MathFunctions { public static void main(String[] args) { // Функция ceil() - ближайшее целое типа double, которое больше равно аргументу double x = -7.65; double xx; xx = Math.ceil(x); // xx = -7.0 System.out.println("xx = " + xx); float f = 11.43f; // ff = 12.0 float ff = (float)Math.ceil((double)f); System.out.println("ff = " + ff); } }
Результат
xx = -7.0 ff = 12.0
⇑
4. Функция floor(). Наибольшее целое, которое меньше или равно заданного аргумента
Общая форма объявления функции:
static double floor(double value);
здесь
- value – аргумент, из которого получается ближайшее целое типа double.
Пример.
public class MathFunctions { public static void main(String[] args) { // Функция floor() // 1. Для типа float float f1 = 2.83f; float resF = (float)Math.floor((double)f1); System.out.println("floor(2.83) = " + resF); // 2. Для типу double double d1 = -7.75; double resD = (double)Math.floor(d1); System.out.println("floor(-7.75) = " + resD); } }
Результат
floor(2.83) = 2.0 floor(-7.75) = -8.0
⇑
5. Функция floorDiv(). Результат целочисленного деления двух целых чисел
Общая форма объявления функции для типов int и long:
static int floorDiv(int divisible, int divider); static int floorDiv(long divisible, long divider);
здесь
- divisible – делимое значение;
- divider – делитель – значение, на которое делится число.
Пример.
public class MathFunctions { public static void main(String[] args) { // Функция floorDiv() // 1. Для типа int int resInt = Math.floorDiv(117, 20); System.out.println("117/20 = " + resInt); // 2. Для типа long long resLong = Math.floorDiv(2300L, 83L); System.out.println("2300/83 = " + resLong); } }
Результат
117/20 = 5 2300/83 = 27
⇑
6. Функция floorMod(). Наименьшая целая оставшаяся часть от деления двух целых чисел
Функция floorMod() возвращает наименьший остаток от деления двух целых чисел. Общая форма объявления функции:
static int floorMod(int divisible, int divider); static int floorMod(long divisible, long divider);
здесь
- divisible – делимое значение;
- divider – делитель – значение, на которое делится число.
Пример.
public class MathFunctions { public static void main(String[] args) { // Функция floorMod() // 1. Для типа int int i1 = 23; int i2 = 11; int resI = Math.floorMod(i1, i2); System.out.println("230/11 = " + resI); // 2. Для типа long long l1 = 100L; long l2 = 9L; System.out.println("100L / 9 = " + Math.floorMod(l1, l2)); } }
Результат
230/11 = 1 100L / 9 = 1
⇑
7. Функция max(). Определение большего из двух значений
Функция max() возвращает максимальное из двух заданных значений. Общая форма объявления функции для примитивных числовых типов:
static int max(int x, int y); static long max(long x, long y); static float max(float x, float y); static double max(double x, double y);
здесь
- x, y – значения, из которых определяется большее.
Пример.
public class MathFunctions { public static void main(String[] args) { // Функция max() - максимальное из двух чисел // 1. Для типа int int i1 = 35; int i2 = 110; int maxInt = Math.max(i1, i2); System.out.println("max(35, 110) = " + maxInt); // 2. Для типа double System.out.println("max(2.88, 3.11) = " + Math.max(2.88, 3.11)); } }
Результат
max(35, 110) = 110 max(2.88, 3.11) = 3.11
⇑
8. Функция min(). Определение меньшего из двух значений
Функция min() возвращает минимум из двух заданных значений. Согласно документации объявления функции для примитивных числовых типов выглядят:
static int min(int x, int y); static long min(long x, long y); static float min(float x, float y); static double min(double x, double y);
здесь
- x, y – значения, из которых определяется наименьшее.
Пример.
public class MathFunctions { public static void main(String[] args) { // Функция min() - минимальное из двух чисел // 1. Для типа long long i1 = 35; long i2 = 110; long minInt = Math.min(i1, i2); System.out.println("min(35, 110) = " + minInt); // 2. Для типа float System.out.println("min(2.88, 3.11) = " + Math.min(2.88, 3.11)); } }
Результат
min(35, 110) = 35 min(2.88, 3.11) = 2.88
⇑
9. Функция nextAfter(). Получить следующее значение аргумента в заданном направлении
С помощью функции nextAfter() можно получить следующее значение аргумента в заданном направлении для чисел с плавающей запятой. Согласно документации объявление функции следующее:
static double nextAfter(double start, double direction); static float nextAfter(float start, double direction);
здесь
- start – начальное значение, из которого задается направление;
- direction – число, определяющее направление изменения начального значения.
Пример.
public class MathFunctions { public static void main(String[] args) { // Функция nextAfter() - получить значение аргумента в заданном направлении // 1. Для типа double double start1 = 35.2; double direction1 = 1.5; double resD = Math.nextAfter(start1, direction1); System.out.println("nextAfter(35.2, 1.5) = " + resD); // 2. Для типа float float start2 = -18.3f; float direction2 = -2.4f; float resF = Math.nextAfter(start2, direction2); System.out.println("nextAfter(-18.3, -2.4) = " + resF); } }
Результат
nextAfter(35.2, 1.5) = 35.199999999999996 nextAfter(-18.3, -2.4) = -18.299997
⇑
10. Функция nextDown(). Получить следующее значение, которое меньше значения аргумента
С помощью функции nextDown() можно получить ближайшее следующее значение, которое меньше значения аргумента. Согласно документации объявление функции следующее:
static float nextDown(float val); static double nextDown(double val);
здесь
- val – значение, относительно которого получается предыдущее значение.
Пример.
public class MathFunctions { public static void main(String[] args) { // Функция nextDown() - получить следующее значение аргумента в направлении убывания // 1. Для типа double double value = 35.2; double resD = Math.nextDown(value); System.out.println("nextDown(35.2) = " + resD); // 2. Для типа float float value2 = 8.3f; System.out.println("nextDown(8.3f) = " + Math.nextDown(value2)); } }
Результат
nextDown(35.2) = 35.199999999999996 nextDown(8.3f) = 8.299999
⇑
11. Функция nextUp(). Получить следующее значение от аргумента в направлении возрастания
Согласно документации объявления функции следующее:
static float nextUp(float val); static double nextUp(double val);
здесь
- val – значение, относительно которого получается следующее значение.
Пример.
public class MathFunctions { public static void main(String[] args) { // Функция nextUp() - получить следующее значение аргумента в направлении роста // 1. Для типа double double value = 35.2; double resD = Math.nextUp(value); System.out.println("nextUp(35.2) = " + resD); // 2. Для типа float float value2 = 8.3f; System.out.println("nextUp(8.3f) = " + Math.nextUp(value2)); } }
Результат
nextUp(35.2) = 35.20000000000001 nextUp(8.3f) = 8.300001
⇑
12. Функция rint(). Получить ближайшее целое значение к указанному аргументу
В соответствии с документацией объявление функции следующее:
static double rint(double arg);
здесь
- arg – исходный аргумент.
Пример.
public class MathFunctions { public static void main(String[] args) { // Функция rint() - получить ближайшее целое значение к указанному аргументу // 1. Положительное число double arg = 5.2; double res = Math.rint(arg); System.out.println("rint(5.2) = " + res); // 2. Отрицательное число arg = -7.65; res = Math.rint(arg); System.out.println("rint(-7.65) = " + res); } }
Результат
rint(5.2) = 5.0 rint(-7.65) = -8.0
⇑
13. Функция round(). Получить аргумент, округленный до ближайшего целого значения
Согласно документации объявление функции следующее:
static long round(double arg);
здесь
- arg – исходный аргумент.
Пример.
public class MathFunctions { public static void main(String[] args) { // Функция round() - получить аргумент, округленный до ближайшего целого значения // 1. Положительное число double arg = 5.6; double res = Math.round(arg); System.out.println("round(5.6) = " + res); res = Math.round(5.2); System.out.println("round(5.2) = " + res); // 2. Отрицательное число arg = -7.65; res = Math.round(arg); System.out.println("round(-7.65) = " + res); res = Math.round(-7.15); System.out.println("round(-7.15) = " + res); } }
Результат
round(5.6) = 6.0 round(5.2) = 5.0 round(-7.65) = -8.0 round(-7.15) = -7.0
⇑
14. Функция ulp(). Получить количество единиц в последнем знаке для указанного аргумента
Согласно документации объявление функции следующее:
static float ulp(float arg); static double ulp(double arg);
тут
- arg – исходный аргумент.
Приклад.
public class MathFunctions { public static void main(String[] args) { // Функция ulp() - получить количество единиц // в последнем знаке для указанного аргумента // 1. Для типа double double argD = 5.618; double resD = Math.ulp(argD); System.out.println("ulp(5.618) = " + resD); System.out.println("ulp(-2.3) = " + Math.ulp(-2.3)); // 2. Для типа float float argF = 5.618f; float resF = Math.ulp(argF); System.out.println("ulp(5.618f) = " + resF); System.out.println("ulp(-2.3f) = " + Math.ulp(-2.3f)); } }
Результат
ulp(5.618) = 8.881784197001252E-16 ulp(-2.3) = 4.440892098500626E-16 ulp(5.618f) = 4.7683716E-7 ulp(-2.3f) = 2.3841858E-7
⇑
Связанные темы
⇑