Класс Math для работы с математическими функциями
Для математических вычислений в языке C# создан специальный статический класс Math, обладающий набором полей и методов для выполнения основных математических операций.
Полями класса Math являются:
- PI — число π;
- E — число e.
Кроме того, класс Math содержит ряд методов, основные из которых рассмотрены ниже.
Методы определения модуля и получения знака — Abs, Sign
Для вычисления абсолютного значения (модуля) используется метод Abs() класса Math. Возвращаемым значением этого метода является абсолютное значение переданного числа. Для получения знака числа используется метод Sign() класса Math. Возвращает значение
- -1 для отрицательного числа,
- 0 для нуля,
- 1 для положительного числа.
В качестве аргумента этим методам передается число. целого типа со знаком &mdath; sbyte, short, int, ulong или вещественного типа — float, double, decimal.
Методы определения минимума и максимума — Min, Max
Методы Min() и Max() возвращают соответственно минимальное или максимальное значение из двух чисел, переданных этим методам в качестве аргументов. Эти методы работают со всеми базовыми числовыми типами данных, но при условии, что типы двух передаваемых аргументов совпадают.
Рассмотрим пример поиска минимального элемента в массиве из 10 элементов с использованием метода Min().
Методы округления
Для округления вещественного числа по правилам арифметики используются методы
- Round(double Число, int КоличествоРазрядов), Round(decimal Число, int КоличествоРазрядов) — округляет указанное число до указанного числа десятичных разрядов после запятой.
- Round(double Число), Round(decimal Число) — округляет указанное число до ближайшего целого по правилам арифметики.
- Round(double Число, int КоличествоРазрядов, MidpointRounding), Round(decimal Число, int КоличествоРазрядов, MidpointRounding) — округляет указанное число до указанного числа десятичных разрядов после запятой. Третий аргумент задает правила округления если значение находится ровно посередине между двумя числами и может принимать значения:
- MidpointRounding.AwayFromZero — до ближайшего числа в сторону большего по модулю значения;
- MidpointRounding.ТоEven — до ближайшего четного числа.
В последнем случае число находится не точно посередине между двумя числами, поэтому округление производится по общим правилам, без учета третьего аргумента метода Round(). Также для округления до целого числа могут использоваться методы
- Ceiling(double число), Ceiling(decimal число) — округление до ближайшего целого числа в большую сторону.
- Floor(double число), Floor(decimal число) — округление до ближайшего целого числа в меньшую сторону.
- Truncate(double число), Truncate(decimal число) — отбрасывает дробную часть числа.
Методы тригонометрических функций
Для вычисления тригонометрических функций класс Math предусматривает ряд методов. Все методы оперируют значениями углов типа double, заданными в радианах и возвращают значение типа double.
- Sin(угол) — вычисление синуса угла.
- Cos(угол) — вычисление косинуса угла.
- Tan(угол) — вычисление тангенса угла.
- Asin(значение) — вычисление арксинуса значения из диапазона [‑1; 1], возвращаемое значение лежит в диапазоне [‑π/2; π/2].
- Acos(значение) — вычисление арккосинуса значения из диапазона [‑1; 1], возвращаемое значение лежит в диапазоне [0; π].
- Atan(значение) — вычисление арктангенса значения, возвращаемое значение лежит в диапазоне [‑π/2; π/2].
- Sinh(угол) — вычисление гиперболического синуса угла.
- Cosh(угол) — вычисление гиперболического косинуса угла.
- Tanh(угол) — вычисление гиперболического тангенса угла.
Логарифмические функции
Класс Math предусматривает ряд методов для работы с экспонентой и логарифмами:
- Exp(double степень) — возвращает значение числа e (Math.E) в указанной степени.
- Log(double число) — возвращает натуральный логарифм указанного числа.
- Log10(double число) — возвращает десятичный логарифм указанного числа.
- Log(double число, double основание) — возвращает логарифм указанного числа по указанному основанию.
Возведение в степень и извлечение квадратного корня
Для возведения числа в степень предусмотрен метод Pow(double, double), в качестве первого аргумента которого указывается число, возводимое в степень, а в качестве второго аргумента — показатель степени.
Для извлечения квадратного корня из числа типа double можно также использовать метод Sqrt(double).
Автор: Вставская Елена Владимировна
Написать комментарий:
java округление до 2 знаков после запятой
Содержание
- Обзор
- Десятичные числа в Java
- Форматирование десятичного числа
- Округление Double с помощью BigDecimal
- Округление чисел с плавающей запятой с помощью DoubleRounder
- Метод Math.round()
- Заключение
Обзор
В этой статье мы рассмотрим, как в Java округлить число до n десятичного знаков.
Десятичные числа в Java
Java предоставляет два примитивных типа, которые могут использоваться для хранения десятичных чисел: float и double . Double — это тип данных, используемый по умолчанию:
Но оба типа данных не должны использоваться для вычисления точных значений . Например, валютных котировок и округления чисел. Для этого лучше применять класс BigDecimal .
Форматирование десятичного числа
Если нужно вывести десятичное число с n знаками после запятой, можно отформатировать выходную строку:
Также можно округлить значение с помощью класса DecimalFormat :
Этот класс позволяет настроить процесс округления числа.
Округление Double с помощью BigDecimal
Чтобы округлить тип double до n знаков после запятой, можно написать helper-метод :
Обратите внимание, что при создании экземпляра класса BigDecimal мы должны всегда использовать конструктор BigDecimal(String) . Это позволяет избежать проблем с представлением неточных значений.
Можно сделать то же самое, используя библиотеку Apache Commons Math :
Актуальную версию этой библиотеки можно найти здесь . Для округления чисел применяется метод Precision.round() , который принимает два аргумента — значение и масштаб:
По умолчанию он использует тот же метод округления HALF_UP, что хэлпер. Поэтому результаты должны быть одинаковыми. п :
Этот метод не рекомендуется использовать для округления чисел, поскольку он усекает значение . Во многих случаях значения округляются неправильно:
Заключение
В этой статье мы рассмотрели различные методы округления чисел до n знаков после запятой, доступные в Java.
Можно просто отформатировать вывод без изменения значения или округлить переменную с помощью вспомогательного метода или подключаемых библиотек.
Код, использованный в этой статье, доступен на GitHub .
Данная публикация представляет собой перевод статьи « How to Round a Number to N Decimal Places in Java » , подготовленной дружной командой проекта Интернет-технологии.ру
Я прочитал много вопросов о stackoverflow, но ни один из них не работает для меня. Я использую math.round() для округления. это код:
вывод я get: 123 , но я хочу, чтобы он был 123.14 . я читал, что добавление *100/100 поможет, но, как вы можете видеть, мне не удалось заставить его работать.
абсолютно необходимо, чтобы как входные, так и выходные данные были двойными.
было бы большой помощью, если вы измените строку 4 вышеприведенного кода и разместите ее.
Ну, это работает.
Или, как сказал @Rufein
это сделает это и для вас.
Вернитесь к своему коду и замените 100 на 100.00 и дайте мне знать, если он работает. Однако, если вы хотите быть формальным, попробуйте следующее:
Я знаю, что это вопрос 2 года, но поскольку каждый орган сталкивается с проблемой, чтобы округлить значения в какой-то момент времени. Я хотел бы поделиться другим способом, который может дать нам округленные значения для любого масштаба, используя BigDecimal class. Здесь мы можем избежать дополнительных шагов, необходимых для получения окончательного значения, если мы используем DecimalFormat(«0.00») или используя Math.round(a * 100) / 100 .
Эта программа даст нам ниже выход
Добавление «D» в 100 делает его двойным литералом, поэтому полученный результат будет иметь точность
Это длинное, но полное доказательство, никогда не сработает
Просто передайте свой номер этой функции как двойной, он вернет вам округление десятичного значения до ближайшего значения 5;
если 4. 25, выход 4.25
если 4.20, выход 4.20
если 4.24, Output 4.20
если 4.26, выход 4.30
если вы хотите округлить до двух знаков после запятой, затем используйте
если до 3-х мест, новый DecimalFormat ( «#. ###» )
если до n мест, новый DecimalFormat ( «#. nTimes #» )
Однако полученный результат может отличаться от ожидаемого. В частности, в данном случае y будет равно 5, несмотря на то, что по всем правилам округления должно быть 6. Чтобы избежать этой многозначности, можно воспользоваться «дедовским» способом, без привязки к возможностям языка.
Однако данная форма записи имеет множество недостатков, от неправильного результата в частных ситуациях до неудобочитаемой записи в целом. Классический метод округления до целого — round. Допустим, дано число n. Тогда для округления запишем:
Если n имеет дробную часть менее 0,5, то число округляется в меньшую сторону, в противном случае — в большую. То есть стандартный математический алгоритм.
Если же вам требуется java округление в меньшую сторону — вместо дополнительной математической операции лучше сразу воспользоваться готовой функций FLOOR:
Java округление в большую сторону выполняется методом CEIL:
Как и в жизни, округлять можно не только до целого числа, но и до определенного знака после запятой. Как и в первом случае, в java округление до сотых можно сделать чисто математически:
Однако запись не слишком удобна, если вам требуется в java округление до плавающего числа знаков с заданным поведением. С помощью методов перечисления RoundingMode() у вас есть такая возможность. Методы следующие:
- UP — округление в сторону большего числа для положительных чисел и меньшего для отрицательных.
- DOWN — округление в сторону меньшего числа для положительных чисел и большего для отрицательных.
- CEILING — округление в сторону большего и для положительных, и для отрицательных чисел.
- FLOOR — округление в сторону меньшего и для положительных, и для отрицательных чисел.
- HALF_UP — округление в большую сторону в случае числа вида 0.5;
- HALF_DOWN — округление в меньшую сторону в случае числа вида 0.5;
- HALF_EVEN — классическое округление
Выглядит подобное округление чисел так:
Цифра в скобках указывает в java округление до 2 знаков double типа.
Специальные методы округления java позволяют разработчику решить любую задачу, не прибегая к грубым мультиязычным способам, содержащим ограничения и ошибки.
В Java есть целочисленные типы данных (long, int, char, short, byte) и есть типы с плавающей точкой (float, double), а по-русски — «с плавающей запятой» . Преобразование значений с дробной частью в целочисленные полезно для упрощения вычислений, последующего чтения и для сокращения объемов используемой памяти. Сделать это можно так:
Однако полученный результат может отличаться от ожидаемого. В частности, в данном случае y будет равно 5, несмотря на то, что по всем правилам округления должно быть 6. Чтобы избежать этой многозначности, можно воспользоваться «дедовским» способом, без привязки к возможностям языка.
Однако данная форма записи имеет множество недостатков, от неправильного результата в частных ситуациях до неудобочитаемой записи в целом. Классический метод округления до целого — round. Допустим, дано число n. Тогда для округления запишем:
Если n имеет дробную часть менее 0,5, то число округляется в меньшую сторону, в противном случае — в большую. То есть стандартный математический алгоритм.
Если же вам требуется java округление в меньшую сторону — вместо дополнительной математической операции лучше сразу воспользоваться готовой функций FLOOR:
Java округление в большую сторону выполняется методом CEIL:
Как и в жизни, округлять можно не только до целого числа, но и до определенного знака после запятой. Как и в первом случае, в java округление до сотых можно сделать чисто математически:
Однако запись не слишком удобна, если вам требуется в java округление до плавающего числа знаков с заданным поведением. С помощью методов перечисления RoundingMode() у вас есть такая возможность. Методы следующие:
- UP — округление в сторону большего числа для положительных чисел и меньшего для отрицательных.
- DOWN — округление в сторону меньшего числа для положительных чисел и большего для отрицательных.
- CEILING — округление в сторону большего и для положительных, и для отрицательных чисел.
- FLOOR — округление в сторону меньшего и для положительных, и для отрицательных чисел.
- HALF_UP — округление в большую сторону в случае числа вида 0.5;
- HALF_DOWN — округление в меньшую сторону в случае числа вида 0.5;
- HALF_EVEN — классическое округление
Выглядит подобное округление чисел так:
Цифра в скобках указывает в java округление до 2 знаков double типа.
Специальные методы округления java позволяют разработчику решить любую задачу, не прибегая к грубым мультиязычным способам, содержащим ограничения и ошибки.
404: Страница не найдена
Страница, которую вы пытались открыть по этому адресу, похоже, не существует. Обычно это результат плохой или устаревшей ссылки. Мы приносим свои извинения за доставленные неудобства.
Что я могу сделать сейчас?
Если вы впервые посещаете TechTarget, добро пожаловать! Извините за обстоятельства, при которых мы встречаемся. Вот куда вы можете пойти отсюда:
Поиск- Узнайте последние новости.
- Наша домашняя страница содержит самую свежую информацию о Java-разработке.
- Наша страница «О нас» содержит дополнительную информацию о сайте, на котором вы находитесь, TheServerSide.com.
- Если вам нужно, свяжитесь с нами, мы будем рады услышать от вас.
Просмотр по категории
SearchAppArchitecture
- Почему контрактное тестирование может быть необходимо для микросервисов
Разработчики сталкиваются с многочисленными проблемами, пытаясь выполнить традиционное сквозное интеграционное тестирование микросервисов. Контракт …
- Растущая роль разработчиков, ориентированных на данные
Больше, чем когда-либо, растущая зависимость разработчиков от данных, источников данных и пользователей подталкивает разработчиков к пониманию ИТ-покупок . ..
- 12 рекомендаций по безопасности API для защиты вашего бизнеса
Как и в любом цикле разработки программного обеспечения, безопасность API должна быть встроена с самого начала. Следуйте этим рекомендациям по проектированию, развертыванию …
ПоискSoftwareQuality
- Устойчивое программное обеспечение нуждается в большем количестве инструментов, корпоративной поддержке
Несколько инструментов могут помочь разработчикам создавать устойчивое программное обеспечение, но они не помогут сократить выбросы углерода без организационной…
- Чтобы безопасность API была успешной, разработчикам нужны интегрированные инструменты
Для большей безопасности API и более четких границ для разработчиков эксперты API World призвали к инструментам безопасности, ориентированным на разработчиков…
- Документация по API может улучшить или испортить опыт разработчиков
На конференции API World на этой неделе эксперты освещают проблемы, связанные с плохой документацией API, и предлагают способы их устранения, например отказ от . ..
SearchCloudComputing
- Проверьте себя по основам облачных вычислений
Чтобы понять технологию, лучше всего начать с основ. Пройдите этот краткий тест по облачным вычислениям, чтобы оценить свои знания о …
- С помощью этого руководства настройте базовый рабочий процесс AWS Batch
AWS Batch позволяет разработчикам запускать тысячи пакетов в AWS. Следуйте этому руководству, чтобы настроить этот сервис, создать свой собственный…
- Партнеры Oracle теперь могут продавать Oracle Cloud как свои собственные
Alloy, новая инфраструктурная платформа, позволяет партнерам и аффилированным с Oracle предприятиям перепродавать OCI клиентам в регулируемых …
ПоискБезопасность
- Уязвимости OpenSSL получают высокоприоритетные исправления
Во вторник проект OpenSSL выпустил версию 3. 0.7 для устранения пары серьезных уязвимостей переполнения буфера в …
- Почему идеальная структура отчетности CISO — это самый высокий уровень
Директора по информационной безопасности обычно отчитываются перед руководителем высокого уровня, но подотчетны руководителю высшего уровня, например генеральному директору, а не …
- Гигиена безопасности и управление позой требуют новых инструментов
Использование нескольких инструментов для обеспечения гигиены безопасности и управления состоянием в масштабе является дорогостоящим и сложным. Новый совмещенный …
ПоискAWS
- AWS Control Tower стремится упростить управление несколькими учетными записями
Многие организации изо всех сил пытаются управлять своей огромной коллекцией учетных записей AWS, но Control Tower может помочь. Услуга автоматизирует…
- Разбираем модель ценообразования Amazon EKS
В модели ценообразования Amazon EKS есть несколько важных переменных.