Android studio округлить double до 2 знаков

Как округлить двойной до двух десятичных знаков в Java?

Это то, что я сделал, чтобы округлить двойной до 2 десятичных знаков:

это отлично работает, если сумма = 25.3569 или что-то в этом роде, но если сумма = 25.00 или сумма = 25.0, то я получаю 25.0! То, что я хочу, — это округление, а также форматирование до 2 десятичных знаков.

20 ответов:

вы работаете с деньгами? Создание String а затем преобразование его обратно довольно петлевой.

использовать BigDecimal . Это обсуждалось достаточно широко. Вы должны иметь Money класс и сумма должна быть BigDecimal .

даже если вы не работаете с деньгами, считать BigDecimal .

просто используйте: (легко, как пирог)

используйте держатель места цифры ( 0 ), а с ‘ # ‘ конечные / ведущие нули отображаются как отсутствующие:

вы Не могу ‘вокруг двойника к [любому количеству] десятичных знаков’, потому что двойники не имеют десятичных знаков. Вы можете преобразовать double в строку base-10 С N десятичными знаками, потому что base-10 действительно имеет десятичные знаки, но когда вы преобразуете его обратно, вы возвращаетесь в double-land, с binary частичная места.

Это самый простой я мог бы сделать это, но он получает работу намного проще, чем большинство примеров, которые я видел.

строку.формат.%»(2Ф», doubleValue) // изменение 2, согласно вашему требованию.

вы можете использовать org.апаш.палата общин.математика.утиль.MathUtils от apache common

double round = MathUtils.round(double1, 2, BigDecimal.ROUND_HALF_DOWN);

вы можете использовать Apache Commons Math:

ваш класс Money может быть представлен как подкласс Long или иметь член, представляющий денежную ценность как собственный long. Затем при присвоении значений вашим денежным экземплярам вы всегда будете хранить значения, которые на самом деле являются реальными денежными значениями. Вы просто выводите свой объект Money (через переопределенный метод toString() Ваших денег) с соответствующим форматированием. например, $ 1.25 во внутреннем представлении денежного объекта составляет 125. Вы представляете деньги в виде центов, или пенсов, или независимо от минимального номинала в валюте, которую вы запечатываете, есть . затем отформатируйте его на выходе. Нет, вы никогда не можете хранить «незаконную» денежную ценность, например, $1.257.

Источник

Как округлить двойные до двух десятичных знаков в Java?

Это то, что я сделал, чтобы округлить двойной до 2 десятичных знаков:

это отлично работает, если сумма = 25.3569 или что-то в этом роде, но если сумма = 25.00 или сумма = 25.0, то я получаю 25.0! То, что я хочу, — это округление, а также форматирование до 2 десятичных знаков.

20 ответов

вы работаете с деньгами? Создание String а затем преобразование его обратно довольно петля.

использовать BigDecimal . Это обсуждалось довольно широко. Вы должны иметь Money класс и сумма должна быть BigDecimal .

даже если вы не работаете с деньгами, считать BigDecimal .

просто используйте: (легко, как пирог)

Читайте также:  Lenovo лаунчер для андроид

выход будет 651.52

используйте держатель места цифры ( 0 ), а с ‘ # ‘ трейлинг/ведущие нули показывают, как отсутвует:

вы Не могу ‘вокруг двойника до [любого количества] десятичных знаков’, потому что двойники не имеют десятичных знаков. Вы можете преобразовать double в строку base-10 С N десятичными знаками, потому что base-10 имеет десятичные знаки, но когда вы преобразуете его обратно, вы возвращаетесь в double-land, с бинарные частичная места.

Это самое простое, что я мог бы сделать, но это делает работу намного проще, чем большинство примеров, которые я видел.

строку.формат.%»(2f», doubleValue) / / изменение 2, согласно вашему требованию.

вы можете использовать org.апаш.палата общин.математика.утиль.MathUtils из Apache common

double round = MathUtils.round(double1, 2, BigDecimal.ROUND_HALF_DOWN);

вы можете использовать Apache Commons Math:

ваш класс Money может быть представлен как подкласс Long или иметь член, представляющий денежное значение как родной long. Тогда при присвоении значений вашим денежным экземплярам вы всегда будете хранить значения, которые на самом деле являются реальными денежными значениями. Вы просто выводите объект Money (через переопределенный метод toString() Ваших денег) с соответствующим форматированием. e.g $ 1.25 во внутреннем представлении денежного объекта равно 125 . Вы представляете деньги в виде центов, пенсов или независимо от минимального номинала в валюте, которую вы запечатываете . затем отформатируйте его на выходе. Нет, вы никогда не сможете хранить «незаконную» денежную стоимость, например, $1.257.

Источник

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

Однако полученный результат может отличаться от ожидаемого. В частности, в данном случае y будет равно 5, несмотря на то, что по всем правилам округления должно быть 6. Чтобы избежать этой многозначности, можно воспользоваться «дедовским» способом, без привязки к возможностям языка.

Однако данная форма записи имеет множество недостатков, от неправильного результата в частных ситуациях до неудобочитаемой записи в целом. Классический метод округления до целого — round. Допустим, дано число n. Тогда для округления запишем:

Если n имеет дробную часть менее 0,5, то число округляется в меньшую сторону, в противном случае — в большую. То есть стандартный математический алгоритм.

Если же вам требуется java округление в меньшую сторону — вместо дополнительной математической операции лучше сразу воспользоваться готовой функций FLOOR:

Java округление в большую сторону выполняется методом CEIL:

Как и в жизни, округлять можно не только до целого числа, но и до определенного знака после запятой. Как и в первом случае, в java округление до сотых можно сделать чисто математически:

Однако запись не слишком удобна, если вам требуется в java округление до плавающего числа знаков с заданным поведением. С помощью методов перечисления RoundingMode() у вас есть такая возможность. Методы следующие:

  1. UP — округление в сторону большего числа для положительных чисел и меньшего для отрицательных.
  2. DOWN — округление в сторону меньшего числа для положительных чисел и большего для отрицательных.
  3. CEILING — округление в сторону большего и для положительных, и для отрицательных чисел.
  4. FLOOR — округление в сторону меньшего и для положительных, и для отрицательных чисел.
  5. HALF_UP — округление в большую сторону в случае числа вида 0.5;
  6. HALF_DOWN — округление в меньшую сторону в случае числа вида 0.5;
  7. 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() у вас есть такая возможность. Методы следующие:

  1. UP — округление в сторону большего числа для положительных чисел и меньшего для отрицательных.
  2. DOWN — округление в сторону меньшего числа для положительных чисел и большего для отрицательных.
  3. CEILING — округление в сторону большего и для положительных, и для отрицательных чисел.
  4. FLOOR — округление в сторону меньшего и для положительных, и для отрицательных чисел.
  5. HALF_UP — округление в большую сторону в случае числа вида 0.5;
  6. HALF_DOWN — округление в меньшую сторону в случае числа вида 0.5;
  7. HALF_EVEN — классическое округление

Выглядит подобное округление чисел так:

Цифра в скобках указывает в java округление до 2 знаков double типа.

Специальные методы округления java позволяют разработчику решить любую задачу, не прибегая к грубым мультиязычным способам, содержащим ограничения и ошибки.

Источник

Изучаем округление в Java: как в Java округлить число до n знаков после запятой

Округление в Java: обзор

В этой статье мы рассмотрим, как в Java округлить число до n десятичного знаков.

Десятичные числа в Java

Java предоставляет два примитивных типа, которые могут использоваться для хранения десятичных чисел: float и double . Double — это тип данных, используемый по умолчанию:

Но оба типа данных не должны использоваться для вычисления точных значений . Например, валютных котировок и округления чисел. Для этого лучше применять класс BigDecimal .

Форматирование десятичного числа

Если нужно вывести десятичное число с n знаками после запятой, можно отформатировать выходную строку:

Также можно округлить значение с помощью класса DecimalFormat :

Этот класс позволяет настроить процесс округления числа.

Java: округление Double с помощью BigDecimal

Чтобы округлить тип double до n знаков после запятой, можно написать helper-метод :

Обратите внимание, что при создании экземпляра класса BigDecimal мы должны всегда использовать конструктор BigDecimal(String) . Это позволяет избежать проблем с представлением неточных значений.

Читайте также:  Анонимайзер для андроид хром

Можно сделать то же самое, используя библиотеку Apache Commons Math :

Актуальную версию этой библиотеки можно найти здесь . Для округления чисел применяется метод Precision.round() , который принимает два аргумента — значение и масштаб:

По умолчанию он использует тот же метод округления HALF_UP, что хэлпер. Поэтому результаты должны быть одинаковыми.

Кроме этого можно изменить процесс приведения чисел, передав в качестве третьего параметра необходимый метод округления.

Округление чисел с плавающей запятой с помощью DoubleRounder

DoubleRounder — это утилита из библиотеки decimal4j . Она предоставляет быстрый метод округления double чисел до 18 знаков после запятой.

Последнюю версию библиотеки можно найти здесь . Чтобы подключить ее, добавьте зависимость в файл pom.xml :

Пример использования утилиты:

Но DoubleRounder дает сбой в нескольких сценариях. Например:

Метод Math.round() java

При использовании метода Math.round() можно контролировать п -количество десятичных разрядов путем умножения и деления на 10^п :

Этот метод не рекомендуется использовать для округления чисел, поскольку он усекает значение . Во многих случаях значения округляются неправильно:

Заключение

В этой статье мы рассмотрели различные методы округления чисел до n знаков после запятой, доступные в Java.

Можно просто отформатировать вывод без изменения значения или округлить переменную с помощью вспомогательного метода или подключаемых библиотек.

Код, использованный в этой статье, доступен на GitHub .

Пожалуйста, опубликуйте ваши мнения по текущей теме материала. Мы крайне благодарны вам за ваши комментарии, дизлайки, отклики, лайки, подписки!

Дайте знать, что вы думаете по этой теме материала в комментариях. За комментарии, лайки, отклики, подписки, дизлайки огромное вам спасибо!

Источник

Java – How to round double / float value to 2 decimal places

By mkyong | Last updated: October 29, 2021

Viewed: 671,352 (+5,224 pv/w)

There are a few ways to round float or double to 2 decimal places in Java.

Table of contents

Note
In short, for monetary calculation, picks BigDecimal ; for display purpose, picks DecimalFormat(«0.00») .

1. DecimalFormat(“0.00”)

We can use DecimalFormat(«0.00») to ensure the number always round to 2 decimal places. For DecimalFormat , the default rounding mode is RoundingMode.HALF_EVEN , and we can use setRoundingMode(RoundingMode) to set a specified rounding mode.

2. DecimalFormat(“0.00”) vs DecimalFormat(“#.##”)

The below shows the difference between DecimalFormat(«0.00») and DecimalFormat(«#.##») .

DecimalFormat(«#.##») displays blank if the second decimal place is empty or zero. The DecimalFormat(«0.00») is a better solution for 2 decimal places.

3. BigDecimal

We also can convert the double to a BigDecimal object and set the scale and rounding mode.

4. String.format(“%.2f”, input)

The String.format is working fine, and the default rounding is half-up; however, we have no way to configure the type of rounding mode.

5. Math.round

5.1 This Math.round is for educational purposes рџ™‚

5.2 For 3 decimal places, try * 1000 .

6. References

mkyong

Founder of Mkyong.com, love Java and open source stuff. Follow him on Twitter. If you like my tutorials, consider make a donation to these charities.

Comments

DecimalFormat df = new DecimalFormat(“0.00”);
double time = 1205.00;
time = Double.valueOf(df.format(time));
System.out.println(time);
// output 1205.0 but expect 1205.00

Need DecimalFormat for display in 2 decimal points.

System.out.println(ft.format(time)); // output 1205.00

In DecimalFormat(“0.00”) or DecimalFormat(“#.##”) ??
In DecimalFormat we should use 0 or # ??

#.## display 1205.61
0.00 display 1205.61

#.## display 1205.6
0.00 display 1205.60

#.## display 1205.6
0.00 display 1205.60

Источник

Оцените статью