Как округлить число в java
Перейти к содержимому

Как округлить число в java

  • автор:

Округление чисел в Java

Округление чисел в Java - 1

Числа с плавающей точкой (float, double) применяются при вычислении выражений, в которых требуется точность до десятичного знака. Высокая точность часто нужна в бухгалтерских и других вычислительных операциях. Но всегда ли нам нужен длинный “хвост” чисел после запятой? Может нам достаточно точности в три знака вещественной части? И есть нас такой вариант устраивает, как правильно выполнить округление? Именно об этом мы сегодня и поговорим: рассмотрим способы округления чисел в Java .

String format

Округление чисел в Java - 2

В качестве первого способа мы рассмотрим округление double: В результате мы отформатируем наше число с плавающей запятой 34766674 с точностью до 3 десятичных разрядов , так как в инструкции для форматирования мы указали три знака после запятой «%.3f. В свою очередь %f при форматировании строки обозначает тип чисел с плавающей запятой, которое включает в себя тип данных double и float в Java. В примере выше мы выводили полученное значение в консоль. Теперь вопрос: как бы можно было это сократить? Все просто: нужно использовать printf, который в свою очередь является format + print. В итоге предыдущий пример у нас сократился бы до: У экземпляра out класса PrintStream помимо этого метода есть ещё метод format, который работает аналогично: Округление происходит по режиму HALF_UP — в сторону числа, которое ближе к обрезаемому (к 0 или 10). Если же эти числа равноудалены (в случае с 5), то округление выполняется в большую сторону. Пример: Более подробно режимы округления мы разберем чуть ниже.

DecimalFormat

Math.ceil() округляет до ближайшего целого числа вверх, но отдаёт не целочисленный тип, а double:

Даже если у нас будет 34.0000000, все равно после использования Math.ceil мы получим 35,0.

Math.floor() округляет до ближайшего целого вниз, также результатом отдаёт double:

Опять же, даже если у нас будет значение 34.999999999, то после использования Math.floor мы получим 34,0.

Math.round () — округляет до ближайшего целого числа, как результат отдаёт int:

Если у нас число 34.5, округление выполняется до 35, если же чуть чуть меньше 34.499, число обрезается до 34.

Чтобы не просто обрезать всю вещественную часть, а регулировать этот процесс до определенного количества знаков и при этом округлять, число умножают на 10^n (10 в степени n), где n равно количеству необходимых знаков после запятой. После этого применяют какой-нибудь метод класса Math для округления, ну а затем снова делят на 10^n:

Округление дробных чисел до целых

Какие существуют в Java стандартные средства для округления чисел?

  • Пример округления: 3.49 — 3, 3.50 — 4, 3.51 — 4.
  1. Math.ceil(n) — возвращает наименьшее целое число, которое больше или равно аргумента n.
  2. Math.floor(n) — возвращает наибольшее целое число, которое меньше или равно аргументу n.
  3. Math.round(n) — возвращает целое число, ближайшее к аргументу n (округляет n).

Umed's user avatar

В годы моей юности, когда не было таких умных методов round/ceil/floor , округление делали примерно так:

Метод Math.round() в Java возвращает long или int (целое число), ближайшее к вещественному числу, double или float , аргумента. Иными словами — осуществляет округление до целых чисел.

MihailPw's user avatar

Тень's user avatar

вот правильный код:

Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.6.8.43486

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Округление чисел в Java

math-round_vertex-academy

В пакете java.lang есть класс Math , а в этом классе есть 3 метода округления чисел с плавающей точкой до ближайшего целого числа:

okruglenie-chisel-v-java_vertex-academy

Названия методов от английских слов:

round — от англ. «округлять»

floor — от англ. «пол»

ceiling — от англ. «потолок»

ceiling-floor_vertex-academy

Давайте рассмотрим на примере как работают эти методы:

Пример №1

Если Вы запустите данный код на своем компьютере, в консоли Вы увидите:

Комментарии:

1. Math.round () данный метод округляет до ближайшего целого числа .

И действительно, на входе было 5.25, а метод нам вернул число 5, поскольку ближайшее целое число — это 5. Если бы, например, мы этим методом округляли число 8.75, то мы бы получили 9, потому что это ближайшее целое число.

Также обратите внимание, что данный метод возвращает значение типа int, то есть целое число. На входе было число 5.25, а метод вернул нам не 5.0, а 5

2. Math.floor ()данный метод округляет число до ближайшего целого вниз.

И действительно, у нас было число 5.25, ближайшее число вниз — это 5.0 А если бы мы, например, округляли с помощью этого метода число 8.75, то получили бы число 8.0, потому что ближайшее целое число вниз — это 8.0.

Теперь Вы понимаете почему метод называется floor — «пол» ��

Также обратите внимание, что данный метод возвращает значение типа double. На входе у нас было число 5.25, после округления мы получили 5.0 — тип double.

3. Math.ceil() — данный метод округляет число до ближайшего целого вверх. У нас было число 5.25, а вернул нам этот метод число 6.0 Даже если бы у нас было число 5.01, данный метод все равно вернул бы нам 6.0, потому что ближайшее целое число вверх — это 6.0

Вот почему данный метод называется ceil — от слова ceiling, «потолок». Также обратите внимание, что данный метод возвращает значение типа double.

Ниже приводим Вам табличку, где это все расписано схематически.

okruglenie-chisel-v-java_vertex

Также Вы должны знать методы Math.random(), Math.max () и Math.min() . Об этих методах Вы можете почитать вот в этих 2 статьях:

Понравилась статья? А еще можно у нас пройти курс обучения по Java. Детальнее на сайте Vertex Academy.

Как округлить число в java

The java.lang.Math.round() is a built-in math function which returns the closest long to the argument. The result is rounded to an integer by adding 1/2, taking the floor of the result after adding 1/2, and casting the result to type long.

  • If the argument is NaN, the result is 0.
  • If the argument is negative infinity or any value less than or equal to the value of Integer.MIN_VALUE, the result is equal to the value of Integer.MIN_VALUE.
  • If the argument is positive infinity or any value greater than or equal to the value of Integer.MAX_VALUE, the result is equal to the value of Integer.MAX_VALUE.

Syntax:

Returns:
The method returns the value of the argument rounded to the nearest int value.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *