import java.math.BigDecimal; import java.math.RoundingMode; public class ArithUtils { /** * double类型数据乘法 * */ public static Double multiDouble(Double d1, Double d2){ BigDecimal b1 = new BigDecimal(Double.toString(d1)); BigDecimal b2 = new BigDecimal(Double.toString(d2)); //return b1.multiply(b2).doubleValue(); return b1.multiply(b2).setScale(2, BigDecimal.ROUND_DOWN).doubleValue();//精确到小数点两位。舍弃小数点后两位的小数 } /** * double类型数据除法 * */ public static double div(double d1,double d2,int len) {// 进行除法运算,int len 表示精确到小数点后几位数 BigDecimal b1 = new BigDecimal(d1); BigDecimal b2 = new BigDecimal(d2); return b1.divide(b2,len,BigDecimal.ROUND_DOWN).doubleValue(); } /** * double类型数据减法 * */ public static Double subDouble(Double d1, Double d2){ BigDecimal b1 = new BigDecimal(Double.toString(d1)); BigDecimal b2 = new BigDecimal(Double.toString(d2)); //return b1.subtract(b2).doubleValue(); return b1.subtract(b2).setScale(2, BigDecimal.ROUND_DOWN).doubleValue();//精确到小数点两位 } /** * double类型数据加法 * */ public static double add(Double d1, Double d2){ BigDecimal b1 = new BigDecimal(Double.toString(d1)); BigDecimal b2 = new BigDecimal(Double.toString(d2)); //return b1.add(b2).doubleValue(); return b1.add(b2).setScale(2, BigDecimal.ROUND_DOWN).doubleValue();//精确到小数点两位 } /** * 整数类型转化为百分数 * */ public static Double divDouble(String data){ Double d2 = Double.valueOf(data); return d2/100.00; } /** * double类型比大小 d1大于d2都为true * */ public static int compareDouble(Double d1, Double d2){ BigDecimal b1 = new BigDecimal(Double.toString(d1)); BigDecimal b2 = new BigDecimal(Double.toString(d2)); return b1.compareTo(b2); } /** * 积分转化为人民币 * */ public static Double transformPoint(Double point, Double count){ Double unit = 1.00; Double ruls = unit/count; Double money = multiDouble(point,ruls); return money; } /** * 四舍五入 * */ public static double formatDoubleRound(double d) { return (double)Math.round((d*100)/100); } /** * 精确到保留到小数点后几位数 */ public static double formatDoubleRoundDigt(double d,int len){ BigDecimal b = new BigDecimal(d); return b.setScale(len, BigDecimal.ROUND_DOWN).doubleValue(); } /** * 向下取整 * */ public static double ceilPoint(double d) { return (double)Math.floor(((d*100)/100)); } public static void main(String[] args){ System.out.println(ArithUtils.compareDouble(11.0, 1.0)); } /** * Title: getPointScale * Description: 将小数 分数转化为比例形式 * @param rate * @return */ public static String getPointScale(BigDecimal rate){ double parseExcelNumericalValue = BigDecimalUtil.parseExcelNumericalValue(rate, 3, RoundingMode.HALF_UP); String plainString = String.valueOf(parseExcelNumericalValue); String[] split = plainString.split("\\."); int a = Integer.parseInt(split[0]);//获取整数部分 int b = Integer.parseInt(split[1]);//获取小数部分 int length = split[1].length(); int FenZi =(int)(a*Math.pow(10, length)+b); int FenMu = (int) Math.pow(10, length); int MaxYueShu = getGongYueShu(FenZi,FenMu); return FenZi/MaxYueShu+":"+FenMu/MaxYueShu; } /** * Title: getGongYueShu * Description: 求两个数的最大公约数 * @param a * @param b * @return */ public static int getGongYueShu(int a, int b) { int t = 0; if(a < b){ t = a; a = b; b = t; } int c = a % b; if(c == 0){ return b; }else{ return getGongYueShu(b, c); } } }
数字转换工具类
猜你喜欢
转载自blog.csdn.net/heihei_100/article/details/80688419
今日推荐
周排行