Skip to content

MonetaryAmount.stripTrailingZeros() is confusing #114

Description

@marschall

javax.money.MonetaryAmount#stripTrailingZeros() is confusing for two reasons:

  • It seems to be the only method left on MonetaryAmount that operates on the number value. #getAmountWhole() has been removed and #getAmountFractionNumerator() and #getAmountFractionDenominator() have been moved to javax.money.NumberValue.
  • It assumes the implementation has an adjustable scale like BigDecimal/org.javamoney.moneta.Money. It is unspecified that should happen in cases where the scale is fixed like for org.javamoney.moneta.FastMoney.

It could either be moved to javax.money.NumberValue like #getAmountFractionNumerator() and #getAmountFractionDenominator() or a user could simply do

money.getFactory()
        .setNumber(money.getNumber().numberValueExact(BigDecimal.class).stripTrailingZeros())
        .create();

Activity

  1. keilw commented on Jan 6, 2019

    @keilw
    Member

    That's not for now, it could be a possible deprecation / refactoring in new releases.

  2. added this to the .Next milestone on Jan 6, 2019
  3. marschall commented on Jan 8, 2019

    @marschall
    MemberAuthor

    I understand that changing the ABI may not be an option.
    What would be nice if we could formalise / specify the behaviour for implementations with a fixed scale.

  4. keilw commented on Jan 8, 2019

    @keilw
    Member

    Maybe it could be configured but only in a future version.

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

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions