I've release a small library for comparison and calculation with BigDecimal, BigDecimalUtils.
Here the readme:
A Small BigDecimal Comparison and Calculation Utility for Java and Android.
Much of the comparison code (if not all) are heavily taken from Representing money.
Why
We need to work with BigDecimal when working with monetary value because double or float are not recommended since they always carry small rounding differences.
So we need to make comparison and calculation of BigDecimal.
We can use compareTo method for comparison, but it too error prone and lacks readability.
Furthermore, doing calculation with BigDecimal is so unnatural.
How It Work
- Import library to your code:
import static com.github.joielechong.currencytextcounter.util.BigDecimalUtils.*;
- Doing comparison:
if(is(income).lt(amount)) {
// ....
}else {
// ...
}
- Do calculation:
remain = calculate(income).min(expense);
Other methods currently in this library
is(bigdecimal).eq(four); // Equal
is(bigdecimal).gt(two); // Greater than
is(bigdecimal).gteq(one); // Greater than equal
is(bigdecimal).lt(two); // Less than
is(bigdecimal).lteq(two); // Less than equal
calculate(bigdecimal).min(bigdecimal) // subtraction
calculate(bigdecimal).plus(bigdecimal) // addition
calculate(bigdecimal).div(bigdecimal) // division
Currently comparison support only String and BigDecimal:
is(bigdecimal).eq(bigdecimal); // BigDecimal and BigDecimal
is(bigdecimal).eq("1000"); // BigDecimal and String
is("1000").lt("2000"); // String and String
is("1000").lt(bigdecimal); // String and BigDecimal
Calculation support some of int, long, float, and BigDecimal (please check the library):
calculate(bigdecimal).min("500") // String and String
calculate("1000").min("500") // String and String
calculate(100).min("500") // int and String
calculate(1l).min("500") // long and String
0 comments:
Silahkan tinggalkan komentar anda: