BigDecimalUtils

Additional

Language
Java
Version
N/A
Created
Jan 8, 2016
Updated
May 25, 2016 (Retired)
Owner
Joielechong (joielechong)
Contributor
Joielechong (joielechong)
1
Activity
Badge
Generate
Download
Source code

BigDecimalUtils

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.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

#Todo Add robust check for numeric string input.

#Credits

Joielechong | www.rilixtech.com | twitter

Hirondelle Systems | www.javapractices.com

#License

Copyright 2016 Joielechong, Rilixtech.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.