Skip to content

Improve rounded #81

Merged
otaviojava merged 12 commits intomasterfrom
round_factory
Apr 25, 2015
Merged

Improve rounded #81
otaviojava merged 12 commits intomasterfrom
round_factory

Conversation

@otaviojava
Copy link
Copy Markdown
Member

Create new strategies to do rounding in monetary amount using:

  • Scale, the number of digits to the right of the decimal point
  • Precision, the total number of digits in a number
  • both the resources
MonetaryOperator monetaryOperator = ScaleRoundedOperator.of(scale, RoundingMode.HALF_EVEN);
CurrencyUnit real = Monetary.getCurrency("BRL");
MonetaryAmount money = Money.of(BigDecimal.valueOf(35.34567), real);
MonetaryAmount result = monetaryOperator.apply(money); // BRL 35.3457
MathContext mathContext = new MathContext(4, RoundingMode.HALF_EVEN);
MonetaryOperator monetaryOperator = PrecisionContextRoundedOperator.of(mathContext);
CurrencyUnit real = Monetary.getCurrency("BRL");
MonetaryAmount money = Money.of(BigDecimal.valueOf(35.34567), real);
MonetaryAmount result = monetaryOperator.apply(money); // BRL 35.35
int scale = 3;
int precision = 5;
MathContext mathContext = new MathContext(precision, RoundingMode.HALF_EVEN);
MonetaryOperator monetaryOperator = PrecisionScaleRoundedOperator.of(scale, mathContext);
CurrencyUnit real = Monetary.getCurrency("BRL");
MonetaryAmount money = Money.of(BigDecimal.valueOf(35.34567), real);
MonetaryAmount result = monetaryOperator.apply(money); // BRL 35.346

Also MonetaryRoundedFactory, to make MonetaryAmount with rounding operator, informed previously:

MonetaryOperator monetaryOperator = MonetaryOperator.identity();
MonetaryRoundedFactory factory = MonetaryRoundedFactory.of(monetaryOperator);
MonetaryRoundedFactory factory = MonetaryRoundedFactory.of(MathContext.DECIMAL32);
int precision = 6;
RoundingMode roundingMode = RoundingMode.HALF_EVEN;
MonetaryRoundedFactory factory = MonetaryRoundedFactory
                .withRoundingMode(roundingMode).withPrecision(precision)
                .build();
int scale = 6;
RoundingMode roundingMode = RoundingMode.HALF_EVEN;
MonetaryRoundedFactory factory = MonetaryRoundedFactory
                .withRoundingMode(roundingMode).withScale(scale)
                .build();
int precision = 6;
int scale = 3;
RoundingMode roundingMode = RoundingMode.HALF_EVEN;
MonetaryRoundedFactory factory = MonetaryRoundedFactory
                .withRoundingMode(roundingMode).withPrecision(precision).withScale(scale)
                .build();
int precision = 6;
int scale = 3;
RoundingMode roundingMode = RoundingMode.HALF_EVEN;
MonetaryRoundedFactory factory = MonetaryRoundedFactory
                .withRoundingMode(roundingMode).withScale(scale).withPrecision(precision)
                .build();
MonetaryAmount monetaryAmount = factory.create(BigDecimal.TEN, real);

@coveralls
Copy link
Copy Markdown

Coverage Status

Coverage increased (+0.31%) to 69.05% when pulling 5f82188 on round_factory into fe1dcba on master.

otaviojava pushed a commit that referenced this pull request Apr 25, 2015
@otaviojava otaviojava merged commit 23caa8d into master Apr 25, 2015
@otaviojava otaviojava deleted the round_factory branch April 25, 2015 02:06
@coveralls
Copy link
Copy Markdown

Coverage Status

Coverage increased (+0.31%) to 69.05% when pulling 5f82188 on round_factory into fe1dcba on master.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants