金额展示处理工具类
2020-10-28 本文已影响0人
初见soulmate
import android.text.TextUtils;
import java.math.BigDecimal;
public class BigDecimalUtils {
/**
* 除法
*/
public static BigDecimal divide(String arg1, String arg2) {
if (TextUtils.isEmpty(arg1)) {
arg1 = "0.0";
}
if (TextUtils.isEmpty(arg2)) {
arg2 = "0.0";
}
BigDecimal big3 = new BigDecimal("0.00");
if (Double.parseDouble(arg2) != 0) {
BigDecimal big1 = new BigDecimal(arg1);
BigDecimal big2 = new BigDecimal(arg2);
big3 = big1.divide(big2, 2, BigDecimal.ROUND_HALF_EVEN);
}
return big3;
}
/**
* 乘法
*/
public static BigDecimal mul(String arg1, String arg2) {
if (TextUtils.isEmpty(arg1)) {
arg1 = "0.0";
}
if (TextUtils.isEmpty(arg2)) {
arg2 = "0.0";
}
BigDecimal big1 = new BigDecimal(arg1);
BigDecimal big2 = new BigDecimal(arg2);
BigDecimal big3 = big1.multiply(big2);
return big3;
}
/**
* 乘法
*/
public static BigDecimal mul(double arg1, double arg2) {
BigDecimal big1 = new BigDecimal(arg1);
BigDecimal big2 = new BigDecimal(arg2);
return big1.multiply(big2);
}
/**
* 减法
*/
public static BigDecimal sub(String arg1, String arg2) {
if (TextUtils.isEmpty(arg1)) {
arg1 = "0.0";
}
if (TextUtils.isEmpty(arg2)) {
arg2 = "0.0";
}
BigDecimal big1 = new BigDecimal(arg1);
BigDecimal big2 = new BigDecimal(arg2);
BigDecimal big3 = big1.subtract(big2);
return big3;
}
/**
* 加法
*/
public static BigDecimal add(String arg1, String arg2) {
if (TextUtils.isEmpty(arg1)) {
arg1 = "0.0";
}
if (TextUtils.isEmpty(arg2)) {
arg2 = "0.0";
}
BigDecimal big1 = new BigDecimal(arg1);
BigDecimal big2 = new BigDecimal(arg2);
BigDecimal big3 = big1.add(big2);
return big3;
}
public static BigDecimal add(double arg1, double arg2) {
BigDecimal big1 = new BigDecimal(arg1);
BigDecimal big2 = new BigDecimal(arg2);
BigDecimal big3 = big1.add(big2);
return big3;
}
public static BigDecimal add(BigDecimal arg1, double arg2) {
BigDecimal big2 = new BigDecimal(arg2);
BigDecimal big3 = arg1.add(big2);
return big3;
}
/**
* 加法
*/
public static String add2(String arg1, String arg2) {
if (TextUtils.isEmpty(arg1)) {
arg1 = "0.0";
}
if (TextUtils.isEmpty(arg2)) {
arg2 = "0.0";
}
BigDecimal big1 = new BigDecimal(arg1);
BigDecimal big2 = new BigDecimal(arg2);
BigDecimal big3 = big1.add(big2);
return big3.toString();
}
/**
* 四舍五入保留N位小数 先四舍五入在使用double值自动去零
*
* @param scare 保留位数
*/
public static String setScare(BigDecimal arg, int scare) {
BigDecimal bl = arg.setScale(scare, BigDecimal.ROUND_HALF_UP);
return String.valueOf(bl.doubleValue());
}
public static double setDifScare(double arg) {
BigDecimal bd = new BigDecimal(arg);
BigDecimal bl = bd.setScale(2, BigDecimal.ROUND_HALF_UP);
return Double.parseDouble(bl.toString());
}
/**
* 四舍五入保留两位小数 先四舍五入在使用double值自动去零
*/
public static String setDifScare(String arg) {
BigDecimal bd = new BigDecimal(arg);
BigDecimal bl = bd.setScale(2, BigDecimal.ROUND_HALF_UP);
return bl.toString();
}
/**
* 四舍五入保留N位小数 先四舍五入在使用double值自动去零(传参String类型)
*/
public static String setDifScare(String arg, int i) {
BigDecimal bd = new BigDecimal(arg);
BigDecimal bl = bd.setScale(i, BigDecimal.ROUND_HALF_UP);
return bl.toString();
}
/**
* 四舍五入保留N位小数 先四舍五入在使用double值自动去零(传参double类型)
*/
public static String setDifScare(double arg, int i) {
BigDecimal bd = new BigDecimal(arg);
BigDecimal bl = bd.setScale(i, BigDecimal.ROUND_HALF_UP);
return bl.toString();
}
/**
* 四舍五入保留N位小数 先四舍五入在使用double值自动去零(传参BigDecimal类型)
*/
public static String setDifScare(BigDecimal bd, int i) {
BigDecimal bl = bd.setScale(i, BigDecimal.ROUND_HALF_UP);
return bl.toString();
}
/**
* 转化成百分数 先四舍五入在使用double值自动去零
*/
public static String setFenScare(BigDecimal arg) {
BigDecimal bl = arg.setScale(3, BigDecimal.ROUND_HALF_UP);
String scare = String.valueOf(mul(bl.toString(), "100").doubleValue());
String fenScare = scare + "%";
return fenScare;
}
/**
* 使用java正则表达式去掉多余的.与0
*/
public static String subZeroAndDot(String s) {
if (s.indexOf(".") > 0) {
// 去掉多余的0
s = s.replaceAll("0+?$", "");
// 如最后一位是.则去掉
s = s.replaceAll("[.]$", "");
}
return s;
}
}