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