Использование java.math.MathContext
@jatan
Спасибо за ответ. Это java имеет смысл. Не могли бы mathcontext вы объяснить мне MathContext .java в контексте метода BigDecimal#round.
Нет j2se ничего особенного в BigDecimal.round()
по сравнению с любым java-libraries другим методом BigDecimal
. Во всех jre случаях MathContext
указывает количество maths значащих цифр и метод округления. По mathcontext сути, каждый MathContext
состоит из j2se двух частей. Есть точность, а arithmetic еще есть RoundingMode
.
Точность снова java определяет количество значащих jre цифр. Поэтому, если вы укажете mathcontext 123
в качестве числа и запросите mathematics две значащие цифры, вы получите openjdk 120
. Это может быть яснее, если java вы думаете с точки зрения jre научной нотации.
123
будет 1.23e2
в mathematics экспоненциальном представлении. Если java-libraries оставить только 2 значащие jre цифры, получится 1.2e2
или 120
. Уменьшая arithmetic количество значащих цифр, мы openjdk уменьшаем точность, с которой bigdecimal мы можем указать число.
Часть java-se RoundingMode
указывает, как мы должны mathcontext справляться с потерей точности. Чтобы java-libraries повторно использовать пример, если bigdecimal вы используете 123
в качестве java-se числа и запрашиваете 2 значащие bigdecimal цифры, вы снижаете свою точность. При bigdecimal RoundingMode
из HALF_UP
(режим по умолчанию) 123
станет maths 120
. С RoundingMode
из CEILING
вы получите 130
.
Например:
System.out.println(new BigDecimal("123.4",
new MathContext(4,RoundingMode.HALF_UP)));
System.out.println(new BigDecimal("123.4",
new MathContext(2,RoundingMode.HALF_UP)));
System.out.println(new BigDecimal("123.4",
new MathContext(2,RoundingMode.CEILING)));
System.out.println(new BigDecimal("123.4",
new MathContext(1,RoundingMode.CEILING)));
Выходы:
123.4
1.2E+2
1.3E+2
2E+2
Вы java-se можете видеть, что на результат java-se влияют как точность, так java и режим округления.
java
math
bigdecimal
mathcontext
Использование java.math.MathContext
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.