开发中常用工具类,总结记录一番!
提要:
1、toEngineeringString:有必要时使用工程计数法。工程记数法是一种工程计算中经常使用的记录数字的方法,与科学技术法类似,但要求10的幂必须是3的倍数
2、toPlainString:不使用任何指数
3、toString:有必要时使用科学计数法
import java.math.BigDecimal;
public class DigitUtil {
/**
* 金额计算,加法
*
* @param obj1
* @param obj2
* @return
*/
public static String add(Object obj1, Object obj2) {
BigDecimal big1 = new BigDecimal(obj1.toString());
BigDecimal big2 = new BigDecimal(obj2.toString());
return big1.add(big2).toPlainString();
}
/**
* 金额计算,除法
*
* @param obj1
* @param obj2
* @return
*/
public static String sub(Object obj1, Object obj2) {
BigDecimal big1 = new BigDecimal(obj1.toString());
BigDecimal big2 = new BigDecimal(obj2.toString());
return big1.subtract(big2).toPlainString();
}
/**
* 金额计算,乘法,保留所有小数位
*
* @param obj1
* @param obj2
* @return
*/
public static String multiply(Object obj1, Object obj2) {
BigDecimal big1 = new BigDecimal(obj1.toString());
BigDecimal big2 = new BigDecimal(obj2.toString());
return big1.multiply(big2).toPlainString();
}
/**
* 金额计算,乘法,四舍五入保留指定小数位
*
* @param obj1
* @param obj2
* @param digit
* 指定保留位数
* @return
*/
public static String multiply(Object obj1, Object obj2, int digit) {
BigDecimal big1 = new BigDecimal(obj1.toString());
BigDecimal big2 = new BigDecimal(obj2.toString());
BigDecimal big3 = big1.multiply(big2).setScale(digit,
BigDecimal.ROUND_HALF_UP);
return big3.toPlainString();
}
/**
* 金额计算,除法,四舍五入保留指定小数位
*
* @param obj1
* @param obj2
* @param digit
* 指定保留位数
* @return
*/
public static String devide(Object obj1, Object obj2, int digit) {
BigDecimal big1 = new BigDecimal(obj1.toString());
BigDecimal big2 = new BigDecimal(obj2.toString());
BigDecimal big3 = big1.divide(big2, digit, BigDecimal.ROUND_HALF_UP);
return big3.toPlainString();
}
/**
* 金额四舍五入,保留两位小数
*
* @param obj
* @return
*/
public static String scale(Object obj) {
return scale(obj, 2);
}
/**
* 金额四舍五入,保留指定位小数
*
* @param obj
* @param digit
* @return
*/
public static String scale(Object obj, int digit) {
BigDecimal big = new BigDecimal(obj.toString());
return big.setScale(digit, BigDecimal.ROUND_HALF_UP).toPlainString();
}
/**
* 金额比较
*
* obj1 > obj2 return 1 obj1 < obj2 return -1 obj1 = obj2 return 0d
*
* @param obj1
* @param obj2
* @return
*/
public static int compareTo(Object obj1, Object obj2) {
BigDecimal big1 = new BigDecimal(obj1.toString());
BigDecimal big2 = new BigDecimal(obj2.toString());
return big1.compareTo(big2);
}
/**
* test
*
* @param args
*/
public static void main(String args[]) {
String str1 = "100";
String str2 = "200";
String str3 = "200";
String str4 = "2.34564";
//加
System.out.println(DigitUtil.add(str1, str2));
//减
System.out.println(DigitUtil.sub(str1, str2));
//乘,保留全部小数位
System.out.println(DigitUtil.multiply(str1, str2));
//乘,保留两位小数
System.out.println(DigitUtil.multiply(str1, str2, 2));
//除
System.out.println(DigitUtil.devide(str1, str2, 2));
//比较大小
System.out.println(DigitUtil.compareTo(str2, str1));
System.out.println(DigitUtil.compareTo(str1, str2));
System.out.println(DigitUtil.compareTo(str2, str3));
//四舍五入
System.out.println(DigitUtil.scale(str4));
System.out.println(DigitUtil.scale(str4, 3));
}
}