Library for operations with money and quantity.
Money uses rounding to 2.
Math operations
Money value = new Money(1000.99);
/* sum */
value.add(new Money(24.01));
/* subtract */
value.subtract(new Money(0.99));
/* multiply */
value.multiply(new Money(5.34));
/* divide */
value.divide(new Money(300));
Logical operations
Money value = new Money(1000);
/* great-equal (>=) */
assert value.ge(new Money(1000));
/* great-than (>) */
assert value.gt(new Money(999.99));
/* low-equal (<=) */
assert value.le(new Money(1000));
/* low-than (<) */
assert value.lt(new Money(1000.01));
/* equal (=) */
assert value.eq(new Money(1000));
Money uses rounding to 3.
Math operations
Quantity value = new Quantity(0.579);
/* sum */
value.add(new Quantity(1.421));
/* subtract */
value.subtract(new Quantity(0.500));
/* multiply */
value.multiply(new Quantity(10));
/* divide */
value.divide(new Quantity(2.5));
Logical operations
Quantity value = new Quantity(1.500);
/* great-equal (>=) */
assert value.ge(new Quantity(1.500));
/* great-than (>) */
assert value.gt(new Quantity(0.990));
/* low-equal (<=) */
assert value.le(new Quantity(1.500));
/* low-than (<) */
assert value.lt(new Quantity(1.501));
/* equal (=) */
assert value.eq(new Quantity(1.500));
assert new Money(1000).divide(new Quantity(5)).eq(new Money(200));