Spec-Zone .ru
спецификации, руководства, описания, API
|
Язык программирования Java поддерживает основную арифметику со своими арифметическими операторами: +, - *,/, и %. Math
class в java.lang
пакет обеспечивает методы и константы для того, чтобы сделать более усовершенствованное математическое вычисление.
Методы в Math
class является всеми помехами, таким образом, Вы вызываете их непосредственно от class, как это:
Math.cos(angle);
static import
функция языка, Вы не должны записать Math
перед каждой математической функцией: import static java.lang.Math.*;
Это позволяет Вам вызывать Math
Методы class их простыми именами. Например:
cos(angle);
Math
class включает две константы:
Math.E
, который является основой натуральных логарифмов, иMath.PI
, который является отношением окружности круга к его диаметру. Math
class также включает больше чем 40 статических методов. Следующая таблица приводит много основных методов.
Метод | Описание |
---|---|
double abs(double d) |
Возвращает абсолютное значение параметра. |
double ceil(double d) |
Возвращает самое маленькое целое число, которое больше чем или равно параметру. Возвращенный как двойное. |
double floor(double d) |
Возвращает самое большое целое число, которое меньше чем или равно параметру. Возвращенный как двойное. |
double rint(double d) |
Возвращает целое число, которое является самым близким в значении к параметру. Возвращенный как двойное. |
long round(double d) |
Возвращает самое близкое длинное или международное, как обозначено типом возврата метода, к параметру. |
double min(double arg1, double arg2) |
Возвращает меньшие из этих двух параметров. |
double max(double arg1, double arg2) |
Возвращает большие из этих двух параметров. |
Следующая программа, BasicMathDemo
, иллюстрирует, как использовать некоторые из этих методов:
public class BasicMathDemo { public static void main(String[] args) { double a = -191.635; double b = 43.74; int c = 16, d = 45; System.out.printf("The absolute value " + "of %.3f is %.3f%n", a, Math.abs(a)); System.out.printf("The ceiling of " + "%.2f is %.0f%n", b, Math.ceil(b)); System.out.printf("The floor of " + "%.2f is %.0f%n", b, Math.floor(b)); System.out.printf("The rint of %.2f " + "is %.0f%n", b, Math.rint(b)); System.out.printf("The max of %d and " + "%d is %d%n", c, d, Math.max(c, d)); System.out.printf("The min of of %d " + "and %d is %d%n", c, d, Math.min(c, d)); } }
Вот вывод из этой программы:
The absolute value of -191.635 is 191.635 The ceiling of 43.74 is 44 The floor of 43.74 is 43 The rint of 43.74 is 44 The max of 16 and 45 is 45 The min of 16 and 45 is 16
Следующая таблица приводит экспоненциальные и логарифмические методы Math
class.
Метод | Описание |
---|---|
double exp(double d) |
Возвращает основу натуральных логарифмов, e, к питанию параметра. |
double log(double d) |
Возвращает натуральный логарифм параметра. |
double pow(double base, double exponent) |
Возвращает значение первого параметра, возведенного в степень второго параметра. |
double sqrt(double d) |
Возвращает квадратный корень параметра. |
Следующая программа, ExponentialDemo
, выводит на экран значение e
, тогда вызовы каждый из методов перечисляли в предыдущей таблице на произвольно выбранных числах:
public class ExponentialDemo { public static void main(String[] args) { double x = 11.635; double y = 2.76; System.out.printf("The value of " + "e is %.4f%n", Math.E); System.out.printf("exp(%.3f) " + "is %.3f%n", x, Math.exp(x)); System.out.printf("log(%.3f) is " + "%.3f%n", x, Math.log(x)); System.out.printf("pow(%.3f, %.3f) " + "is %.3f%n", x, y, Math.pow(x, y)); System.out.printf("sqrt(%.3f) is " + "%.3f%n", x, Math.sqrt(x)); } }
Вот вывод, который Вы будете видеть, когда Вы будете работать ExponentialDemo
:
The value of e is 2.7183 exp(11.635) is 112983.831 log(11.635) is 2.454 pow(11.635, 2.760) is 874.008 sqrt(11.635) is 3.411
Math
class также обеспечивает набор тригонометрических функций, которые получаются в итоге в следующей таблице. Значение, которое передают в каждый из этих методов, является углом, выраженным в радианах. Можно использовать toRadians
метод, чтобы преобразовать от градусов до радианов.
Метод | Описание |
---|---|
double sin(double d) |
Возвращает синус указанного двойного значения. |
double cos(double d) |
Возвращает косинус указанного двойного значения. |
double tan(double d) |
Возвращает касательную указанного двойного значения. |
double asin(double d) |
Возвращает arcsine указанного двойного значения. |
double acos(double d) |
Возвращает arccosine указанного двойного значения. |
double atan(double d) |
Возвращает арктангенс указанного двойного значения. |
double atan2(double y, double x) |
Преобразовывает прямоугольные координаты (x, y) к полярной координате (r, theta) и возвраты theta . |
double toDegrees(double d) |
Преобразовывает параметр градусам или радианам. |
Вот программа, TrigonometricDemo
, это использует каждый из этих методов, чтобы вычислить различные тригонометрические значения для угла на 45 градусов:
public class TrigonometricDemo { public static void main(String[] args) { double degrees = 45.0; double radians = Math.toRadians(degrees); System.out.format("The value of pi " + "is %.4f%n", Math.PI); System.out.format("The sine of %.1f " + "degrees is %.4f%n", degrees, Math.sin(radians)); System.out.format("The cosine of %.1f " + "degrees is %.4f%n", degrees, Math.cos(radians)); System.out.format("The tangent of %.1f " + "degrees is %.4f%n", degrees, Math.tan(radians)); System.out.format("The arcsine of %.4f " + "is %.4f degrees %n", Math.sin(radians), Math.toDegrees(Math.asin(Math.sin(radians)))); System.out.format("The arccosine of %.4f " + "is %.4f degrees %n", Math.cos(radians), Math.toDegrees(Math.acos(Math.cos(radians)))); System.out.format("The arctangent of %.4f " + "is %.4f degrees %n", Math.tan(radians), Math.toDegrees(Math.atan(Math.tan(radians)))); } }
Вывод этой программы следующие:
The value of pi is 3.1416 The sine of 45.0 degrees is 0.7071 The cosine of 45.0 degrees is 0.7071 The tangent of 45.0 degrees is 1.0000 The arcsine of 0.7071 is 45.0000 degrees The arccosine of 0.7071 is 45.0000 degrees The arctangent of 1.0000 is 45.0000 degrees
random()
метод возвращает псевдобеспорядочно выбранное число между 0.0 и 1.0. Диапазон включает 0.0, но не 1.0. Другими словами: 0.0 <= Math.random() < 1.0
. Чтобы получить число в различном диапазоне, можно выполнить арифметику на значении, возвращенном случайным методом. Например, чтобы генерировать целое число между 0 и 9, Вы записали бы:
int number = (int)(Math.random() * 10);
Умножая значение на 10, диапазон возможных значений становится 0.0 <= number < 10.0
.
Используя Math.random
работы хорошо, когда Вы должны генерировать единственное случайное число. Если Вы должны генерировать серию случайных чисел, следует создать экземпляр java.util.Random
и вызовите методы на тот объект генерировать числа.