Diberdayakan oleh Blogger.

Jumat, 08 Januari 2016

BigDecimalUtils, A Small BigDecimal Comparison and Calculation Utility for Java and Android.

by Joielechong sipayung  |  in Library at  Jumat, Januari 08, 2016

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.


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


Silahkan tinggalkan komentar anda: