В уроке 8 мы затронули логические операторы, они нам были необходимы для формирования логического выражения в условиях if. Этот урок будет посвящен математике в Java, и поэтому мы рассмотрим подробнее арифметические операторы и частично возможности класса Math.
Но для начала, выясним, что же такое операторы. Операторы это специальные символы, отвечающие за ту или иную операцию, например сложение, умножение, сравнение. Все операторы в Java можно разбить на 4 класса — арифметические, битовые, операторы сравнения и логические.
Арифметические операторы в Java
Для стандартных арифметических операций, таких как сложение, вычитание, умножение, деление в Java используются традиционные символы, к которым мы привыкли со школы:
В Java также имеется специальный оператор %, обозначающий остаток от делния.
Пример использования: дан массив целых чисел, вывести на консоль только те числа, которые делятся на 3.
Операции с присваиванием
Рассмотрим задачу вывода на экран 10 первых четных чисел чисел
мы можем записать сокращенно
+= это оператор сложения с присваиванием. Подобные операторы есть для всех основных 5 операций, рассмотренных выше
Пример использования: Найти факториал числа 7.
Инкрементирование и декрементирование
Инкремент, обозначается ++ и увеличивает значение переменной на единицу. Декремент обозначается — и уменьшает значение на единицу. С инкрементом и декрементом мы часто встречаемся в цикле for.
Инкремент и декремент бывают двух форм
Различие префиксной и постфиксной формы проявляется только тогда, когда эти операции присутствуют в выражениях. Если форма префиксная, то сначала произойдет увеличение (или уменьшение) переменной на единицу, а потом с новым значением будет произведены дальнейшие вычисления. Если форма постфиксная, то расчет выражения будет происходить со старым значением переменной, а переменная увеличится (или уменьшится) на единицу после вычисления выражения. Пример
В первом случае сначала переменная a увеличится на 1, потом произойдет вычисление всего выражения. Во втором случае произойдет вычисление выражения при старом значении b = 3, и после вычисления b увеличится на 1, на результат в postfix это уже не повлияет.
Если вы поняли принцип работы постфиксного и префиксного инкремента/декремента, то предлагаю решить в уме такую задачу:
Вопрос: чему в итоге равны x и y? После того, как вы сделали предположение, проверьте его в java.
Задача со зведочкой. Дан код:
Какие числа будут выведены на экран? Почему? Разобраться самостоятельно.
Примечание: инкремент и декремент применяются только к переменной. Выражение вида 7++ считается недопустимым.
Java является одним из самых полезных языков программирования. Он имеет множество приложений, таких как построение архитектуры, решение вычислений в науке, построение карт и т. Д. Чтобы упростить эти задачи, Java предоставляет класс java.lang.Math или математические функции в Java, которые выполняют несколько операций, таких как квадрат, экспоненциальный, ceil, логарифм, куб, абс, тригонометрия, квадратный корень, пол и т. д. Этот класс предоставляет два поля, которые являются основами математического класса. Они есть,
Различные математические функции в Java
Java предлагает множество математических методов. Их можно классифицировать, как показано ниже:
Теперь давайте рассмотрим их подробнее.
1. Основные математические методы
Для лучшего понимания мы можем реализовать описанные выше методы в Java-программе, как показано ниже:
метод
Возвращаемое значение
аргументы
пример
Абсолютная ценность аргумента. т.е. положительное значение
long, int, float, double
int n1 = Math.abs (80) // n1 = 80
int n2 = Math.abs (-60) // n2 = 60
double n = Math.sqrt (36.0) // n = 6.0
double n = Math.cbrt (8.0) // n = 2.0
int n = Math.max (15, 80) // n = 80
int n = Math.min (15, 80) // n = 15
Округляет значение с плавающей точкой до целого числа
двойной
double n = Math.ceil (6.34) //n=7.0
пол()
Округляет значение с плавающей точкой до целочисленного значения
двойной
double n = Math.floor (6.34) //n=6.0
Округляет число с плавающей запятой или двойное значение до целочисленного значения вверх или вниз
поплавок
double n = Math.round (22.445); // n = 22.0 double n2 = Math.round (22.545); //n=23.0
Значение первого параметра повышается до второго параметра
Случайное число от 0 до 1
двойной
double n = Math.random () // n = 0.2594036953954201
Если положительный, 1 будет отображаться.
Если 0, 0 будет отображаться
поплавок
Сумма параметров. Исключение выдается, если полученный результат переполняется значением long или int.
int, long
int n = Math.addExact (35, 21) // n = 56
Параметр увеличивается на 1. Исключение выдается, если полученный результат переполняет значение int.
int, long
int n = Math. incrementExact (36) // n = 37
Разница параметров. Исключение выдается, если полученный результат переполняет значение int.
int, long
int n = Math.subtractExact (36, 11) // n = 25
Сумма параметров. Исключение выдается, если полученный результат переполняется значением long или int.
int, long
int n = Math.multiplyExact (5, 5) // n = 25
Параметр уменьшается на 1. Исключение выдается, если полученный результат переполняет int или long.
int, long
int n = Math. decmentExact (36) // n = 35
Отрицание параметра. Исключение выдается, если полученный результат переполняет int или long.
int, long
Абсолютное значение первого параметра вместе со знаком, указанным во втором параметре
двойной, поплавок
Разделите первый параметр на второй параметр, и эта операция будет выполнена.
долго, инт
int n = Math.floorDiv (25, 3) // n = 8
Сумма квадратов параметров и выполнения операции квадратного корня. Промежуточное переполнение или недостаток не должно быть.
двойной
double n = Math.hypot (4, 3) //n=5.0
беспристрастный показатель. Этот показатель представлен в двойном или плавающем
ИНТ
double n = Math.getExponent (50.45) // n = 5
Выход:
2. Тригонометрические математические методы
Ниже приведена Java-программа для реализации тригонометрических математических функций, упомянутых в таблице:
метод
Возвращаемое значение
аргументы
пример
двойное число1 = 60; // Преобразование значения в радианы
Арксинус Значение параметра. Или значение обратного синуса параметра
двойной
Math.asin (1.0) // 1.5707963267948966
Значение арккосинуса параметра или значение обратного косинуса параметра
двойной
Значение арктангенса параметра или значение обратного тангенса параметра
двойной
Math.atan (6.267) // 1.4125642791467878
//Java program to implement trigonometric math functions public class JavaMathFunctions ( public static void main(String() args) ( double num1 = 60; // Conversion of value to radians double value = Math.toRadians(num1); System.out.println(«sine value is : «+Math.sin(value)); System.out.println(«cosine value is : «+Math.cos(value)); System.out.println(«tangent value is : «+Math.tan(value)); double num2 = 1.0; System.out.println(«acosine value is : «+Math.acos(num2)); System.out.println(«asine value is : «+Math.asin(num2)); double num3 = 6.267; System.out.println(«atangent value is : «+Math.atan(num3)); Выход:
3. Логарифмические математические методы
Ниже приведен пример программы, которая реализует методы логарифмической математики:
метод
пример
double n = Math.expm1 (2.0) // n = 6.38905609893065
double n = Math.exp (2.0) // n = 7.38905609893065
double n = Math.log (38, 9) //n=3.6609942506244004
double n = Math.log10 (38, 9) // n = 1, 5899496013257077
double n = Math.log1p (26) // n = 3.295836866004329
Код: //Java program to implement logarithmic math functions public class JavaMathFunctions ( public static void main(String() args) ( double n1 = Math.expm1(2.0); double n2 = Math.exp(2.0); double n3 = Math.log(38.9); double n4 = Math.log10(38.9); double n5 = Math.log1p(26); System.out.println(«expm1 value of 2.0 is : «+n1); System.out.println(«exp value of 2.0 is : «+n2); System.out.println(«log of 38.9 is : «+n3); System.out.println(«log10 of 38.9 is : «+n4); System.out.println(«log1p of 26 is : «+n5); ))
Выход:
4. Гиперболические математические методы.
Ниже приведена Java-программа для реализации гиперболических математических функций, упомянутых в таблице:
//Java program to implement HYPERBOLIC math functions public class JavaMathFunctions ( public static void main(String() args) ( double n1 = Math.sinh (30); double n2 = Math.cosh (60.0); double n3 = Math.tanh (60.0); System.out.println(«Hyperbolic sine value of 300 is : «+n1); System.out.println(«Hyperbolic cosine value of 60.0 is : «+n2); System.out.println(«Hyperbolic tangent value of 60.0 is : «+n3); ) )
Выход:
5. Угловые математические методы
метод
Возвращаемое значение
аргументы
пример
toRadians ()
Угол в градусах преобразуется в радиан
двойной
double n = Math.toRadians (180.0) // n = 3.141592653589793
double n = Math. toDegrees (Math.PI) //n=180.0
Теперь давайте рассмотрим пример программы для демонстрации методов Angular Math.
//Java program to implement Angular math functions public class JavaMathFunctions ( public static void main(String() args) ( double n1 = Math.toRadians(180.0); double n2 = Math. toDegrees (Math.PI); System.out.println(«Radian value of 180.0 is : «+n1); System.out.println(«Degree value of pi is : «+n2); ) )
Выход:
Вывод
Java предлагает широкий спектр математических функций для выполнения различных задач, таких как научные вычисления, проектирование архитектуры, проектирование структуры, построение карт и т. Д. В этом документе мы подробно обсуждаем несколько основных, тригонометрических, логарифмических и угловых математических функций с примерами программ. и примеры.
Рекомендуемые статьи
Это руководство по математическим функциям в Java. Здесь мы обсуждаем 5 методов математической функции в Java с кодами и выводами. Вы также можете просмотреть другие наши статьи, чтобы узнать больше-
Арифметические и математические операторы Java с примерами
Java содержит набор встроенных математических операторов для выполнения простых арифметических операций над переменными. Они достаточно просты. Также есть класс Java Math, который содержит методы для выполнения более сложных математических вычислений.
Математические операторы Java
Четыре основных математических оператора.
Сложение
Оператор + выполняет сложение двух значений. Это может быть добавление двух констант, константы и переменной или переменной и переменной. Вот несколько примеров:
Оператор + заменит два значения на сумму двух значений во время выполнения. Таким образом, в месте, где записано выражение sum1 + 33, во время выполнения будет заменено суммой значения sum1 и постоянного значения 33.
Конечно, вы можете создавать более длинные цепочки дополнений, и таким образом добавлять более двух чисел. Вот пример добавления трех или более значений вместе:
Обычно используемая математическая операция над переменными – установить переменную равной ее собственному значению плюс другое значение. Вот как это выглядит:
Вторая строка этого примера устанавливает переменную суммы, равную ее собственному значению (перед присвоением нового значения) + 20. Что означает 10 + 20.
Поскольку добавление значения в переменную Java является очень распространенной операцией, есть встроенный оператор для этой конкретной цели. Это оператор + =. Вот пример выше, переписанный с использованием оператора:
Вторая строка в этом примере добавляет 20 к переменной result. Это эквивалентно коду результата = результат + 20;
Вычитание
Оператор “-” выполняет вычитание одного значения из другого. Это может быть вычитание постоянного значения из другого постоянного значения, постоянного значения из переменной или переменной из переменной. Вот несколько примеров:
Оператор “-” заменит два значения разницей между двумя значениями, так же как с оператором +.
Вы можете создавать более длинные цепочки вычитаний. Вот пример вычитания двух значений из другого в дном выражении Java:
Это работает и для переменных.
Помните, минус минус равно плюс, как в обычной математике. Вот пример этого:
Как и в случае с дополнением, Java содержит оператор, специально предназначенный для вычитания значения из переменной и присвоения результата переменной. Вот первое, как это будет выглядеть без этого оператора:
Вот как выглядит та же математическая операция с оператором “-=”:
Умножение
Оператор * выполняет умножение двух значений. Значения могут быть либо двумя постоянными значениями, переменной и постоянным значением, либо двумя переменными. Вот несколько примеров:
Оператор * заменит математическое выражение умножения на произведение двух значений во время выполнения.
Вы можете создавать более длинные цепочки умножения, используя оператор *. Вот пример:
Умножение переменной на значение и присвоение значения обратно переменной является обычной математической операцией в приложениях Java. Поэтому Java содержит явный оператор для этой операции. Оператор “*=”. Вот пример, как будет выглядеть вычисление без оператора:
Вторая строка этого примера умножает значение переменной результата (до присвоения результата этого вычисления) на 20 и присваивает значение обратно переменной результата.
Вот как выглядит та же математическая операция с оператором:
Деление
Оператор “/” выполняет деление одного значения на другое. Это может быть деление одной константы на другую, переменной на константу или одной переменной на другую переменную.
Вы можете объединить несколько значений для деления, но из-за приоритета математического оператора Java (объясненного позже) вы должны обратить внимание на то, как объединяете значения.
После выполнения этого математического выражения переменная деления будет содержать значение 5. Это результат, потому что математическое выражение рассчитывалось сначала путем деления 100 на 10 (= 10), а затем 10 на 2 (= 5). Но что, если вы хотели сначала разделить 10 на 2 (= 5), а затем разделить 100 на 5 (= 20)? Вы должны были бы использовать скобки для достижения этого, например:
Java также содержит оператор быстрого доступа для деления значения переменной на другое значение и присвоения этого значения обратно переменной. Оператор “/=”. Вот как выглядит математическая операция без оператора:
Во второй строке этого примера значение переменной результата (значение, которое оно имело до присвоения результата этого вычисления) делится на 5 и присваивает результат обратно переменной результата.
Вот как выглядит та же математическая операция с оператором “/=”:
Остаток / Модуль
Математическая операция остаток выполняет целочисленное деление одного значения на другое и возвращает остаток этого деления. Оператор для операции остаток / по модулю – это символ % (процент). Вот пример работы модуля:
100, деленное на 9 – это 11 с остатком 1 (11 умножить на 9 – 99). Таким образом, переменной остатка присваивается значение 1.
Java также содержит оператор быстрого доступа для деления переменной на другое значение и назначения оставшейся части этого деления переменной. Оператор “%=”. Вот пример:
Вторая строка этого примера назначит значение 1 переменной результата. 1 является результатом 100% 9.
Приоритет оператора Java Math
Как только вы начинаете комбинировать математические операторы Java в математических выражениях, становится важным контролировать, когда и какие вычисления выполнять, чтобы получить желаемый результат. Математические операторы Java имеют естественный приоритет операторов, который аналогичен приоритетам стандартных математических операторов.
Сначала выполняются умножения и деления. Есть две группы из трех умножений и делений. Каждая группа выполняется слева направо:
После вычисления умножения и деления математическое выражение выглядит так:
Теперь сложения и вычитания выполняются. Таким образом, значение, присвоенное переменной результата, равно 2000 + 600 = 2600.
Вы можете контролировать приоритет оператора и последовательность вычислений в математических выражениях, используя круглые скобки. Выражения в скобках имеют более высокий приоритет, чем любой другой оператор. Внутри скобок применяется нормальный приоритет оператора. Вот математическое выражение из ранее, но с вставленными скобками, которые изменяют вычисления:
Значение 100 все еще умножается на 100 (= 10 000), но теперь оно делится на 5 + 200 (= 205) вместо 5. После этого деления результат умножается на 3, а затем делится на 2. Результат выполнения 72 (округление вычислений влияет на результат).
Java Integer Math
Математические операции, выполняемые с целочисленными типами Java (byte, short, int и long), ведут себя немного иначе, чем обычные математические операции. Поскольку целочисленные типы не могут содержать дроби, в каждом вычислении с одним или несколькими целочисленными типами все дроби в результате обрезаются. Посмотрите на это математическое выражение:
Округление также происходит в подрезультатах больших вычислений.
С плавающей точкой Math
Java содержит два типа данных с плавающей точкой: float и double. Они могут содержать дроби в числах. Если нужны дробные выражения в математических выражениях, вы должны использовать один из этих типов данных. Вот пример математического выражения с плавающей точкой:
Несмотря на то, что переменная результата теперь имеет тип с плавающей запятой (double), конечный результат по-прежнему равен 12 вместо 12,5. Причина в том, что оба значения в математическом выражении (100 и 8) оба являются целыми числами. Таким образом, результат деления одного на другое сначала преобразуется в целое число (12), а затем присваивается переменной результата.
Чтобы избежать округления вычислений, необходимо убедиться, что все типы данных, включенные в математическое выражение, являются типами с плавающей запятой. Например, вы могли бы сначала присвоить значения переменным с плавающей запятой следующим образом:
Теперь переменная результата будет иметь значение 12,5.
В Java есть способ заставить все числа в расчете быть переменными с плавающей точкой. Вы ставите числа с большой буквы F или D. Вот пример:
Обратите внимание на прописные буквы D после каждого числа. Этот верхний регистр D говорит Java, что эти числа должны интерпретироваться как числа с плавающей запятой, и, таким образом, деление должно быть делением с плавающей запятой, которое сохраняет дроби вместо их обрезания.
На самом деле вы также можете сделать число длинным, добавив суффикс числа к верхнему регистру L, но long по-прежнему является целочисленным типом, поэтому он не будет сохранять дробные части в вычислениях.
Точность с плавающей точкой
Типы данных с плавающей точкой не являются точными на 100%. Вы можете столкнуться с ситуациями, когда числа со многими дробями не складываются с ожидаемым числом. Если вычисление с плавающей запятой приводит к числу с большим количеством дробей, чем может обработать число с плавающей запятой или двойное число, дроби могут быть обрезаны. Конечно, заданная точность может быть более чем достаточной для многих типов вычислений, но имейте в виду, что дроби могут фактически быть отсечены.
Вывод выводится при выполнении этого кода с Java 8:
Первый оператор System.out.println() правильно печатает значение 0.0, которое является начальным значением переменной resultDbl3.
Однако второй оператор System.out.println() выводит несколько странный результат. Добавление значения 0,01 к 0 всего 100 раз должно привести к значению 1,0, верно? Но каким-то образом окончательный результат 1.0000000000000007. Как видите, что-то не так во фракциях.
Обычно неточность с плавающей запятой незначительна, но все же важно знать об этом.
Класс Java Math
Класс Java Math предоставляет более сложные математические вычисления, чем те, которые предоставляют базовые математические операторы Java. Класс Math содержит методы для:
Math находится в пакете java.lang, а не в пакете java.math. Таким образом, полное имя класса Math – это java.lang.Math.
Поскольку многие его функции независимы друг от друга, каждый метод будет объяснен в своем собственном разделе ниже.
Основные математические функции
Java.lang.Math содержит набор базовых математических функций для получения абсолютного значения, наибольшего и наименьшего из двух значений, округления значений, случайных значений и т. д.
Math.abs()
Функция Math.abs() возвращает абсолютное положительное значение переданного ей параметра. Если значение параметра является отрицательным, знак “-” удаляется и возвращается положительное значение, соответствующее отрицательному значению без знака. Вот два примера:
Метод Math.abs() представлен в 4 версиях:
Какой из этих методов вызывается, зависит от типа параметра, передаваемого методу Math.abs().
Math.ceil()
Функция округляет значение с плавающей запятой до ближайшего целого числа. Округленное значение возвращается как двойное. Вот пример:
После выполнения этого Java-кода переменная ceil будет содержать значение 8.0.
Math.floor()
Функция Math.floor() округляет значение с плавающей запятой до ближайшего целочисленного значения. Округленное значение возвращается как двойное. Вот пример:
После выполнения ceil будет содержать значение 8.0.
Math.floorDiv()
Метод Math.floorDiv() делит одно целое число (int или long) на другое и округляет результат до ближайшего целочисленного значения. Если результат положительный, эффект такой же, как при использовании оператора “/” (деления), описанного ранее в этом тексте.
Однако, если результат отрицательный, результат не тот же. С помощью оператора “/” дроби просто усекаются. Для положительных чисел это соответствует округлению в меньшую сторону, для отрицательных – в большую. Метод floorDiv() округляет до ближайшего отрицательного целого числа, вместо того, которое будет происходить при усечении дроби.
Это показывает разницу между оператором “/” и Math.floorDiv().
Math.min()
Метод Math.min() возвращает наименьшее из двух значений, переданных ему в качестве параметра:
После выполнения этого кода переменная min будет содержать значение 10.
Math.max()
Метод Math.max() возвращает наибольшее из двух значений, переданных ему в качестве параметра:
После выполнения этого кода переменная max будет содержать значение 20.
Math.round()
Метод Math.round() округляет число с плавающей точкой или удваивается до ближайшего целого числа, используя обычные правила математического округления (вверх или вниз):
После выполнения этих двух операторов Java переменная roundedDown будет содержать значение 23,0, а переменная roundndedUp будет содержать значение 24,0.
Math.random()
Метод Math.random() возвращает случайное число с плавающей запятой в диапазоне от 0 до 1. Конечно, это число не полностью случайное, но результат некоторого вычисления, которое должно сделать его настолько непредсказуемым, насколько это возможно. Вот пример:
Чтобы получить случайное значение между 0 и, например, 100, умножьте значение, возвращаемое Math.random(), на максимальное число (например, 100). Вот пример того, как это может выглядеть:
Если вам нужно целочисленное значение, используйте метод round(), floor() или ceil().
Экспоненциальные и логарифмические функции
Класс Java Math также содержит набор функций, предназначенных для экспоненциальных и логарифмических вычислений.
Math.exp()
Функция Math.exp() возвращает число Эйлера, возведенное в степень значения, указанного в качестве параметра:
Math.log()
Метод Math.log() предоставляет логарифм данного параметра. Основой для логарифма является число Эйлера. Таким образом, Math.log() предоставляет обратную функцию Math.exp(). Вот пример:
Math.log10()
Метод Math.log10 работает подобно методу Math.log(), за исключением того, что использует 10 как основу для вычисления логарифма вместо числа Эйлера:
Math.pow()
Функция Math.pow() принимает два параметра. Метод возвращает значение первого параметра, возведенное в степень второго параметра. Вот пример:
Другими словами, пример Math.pow() вычисляет значения 2, 2 и 28, которые равны 4 и 256.
Math.sqrt()
Метод Math.sqrt() вычисляет квадратный корень заданного ему параметра:
Тригонометрические функции
Класс Java Math содержит набор тригонометрических функций. Эти функции могут вычислять значения, используемые в тригонометрии, такие как синус, косинус, тангенс и т. д.
Mathkpi
Константа Math.PI представляет собой двойное значение, значение которого очень близко к значению PI – математическому определению PI.
Math.sin()
Метод Math.sin() вычисляет значение синуса некоторого значения угла в радианах:
Math.cos()
Метод Math.cos() вычисляет значение косинуса некоторого значения угла в радианах:
Math.tan()
Метод Math.tan() вычисляет значение тангенса некоторого значения угла в радианах:
Math.asin()
Math.acos()
Math.atan()
Math.atan2()
Вот что говорит JavaDoc:
Msgstr “Возвращает угол тета от преобразования прямоугольных координат (x, y) в полярные координаты (r, тета)”.
Если вам нужен этот метод, пожалуйста, прочитайте JavaDoc.
Теперь вы знаете какие однокоренные слова подходят к слову Как в java написать формулу, а так же какой у него корень, приставка, суффикс и окончание. Вы можете дополнить список однокоренных слов к слову "Как в java написать формулу", предложив свой вариант в комментариях ниже, а также выразить свое несогласие проведенным с морфемным разбором.
Какие вы еще знаете однокоренные слова к слову Как в java написать формулу: