1、使用浮点数类型和DecimalFormat进行格式化

int dividend = 10;
int divisor = 3;
 // 将其中一个操作数强制转换为double类型,使得除法运算得到浮点数结果
double result = (double) dividend / divisor;
// 创建DecimalFormat对象,指定保留两位小数
DecimalFormat decimalFormat = new DecimalFormat("#0.00"); 
// 使用DecimalFormat格式化浮点数结果,得到字符串形式的结果
String formattedResult = decimalFormat.format(result); 
// 输出格式化后的结果
System.out.println(formattedResult); 

 2、使用BigDecimal类进行精确的数值计算和格式化

int dividend = 10;
int divisor = 3;
 // 将被除数转换为BigDecimal类型
BigDecimal dividendBigDecimal = new BigDecimal(dividend);
// 将除数转换为BigDecimal类型
BigDecimal divisorBigDecimal = new BigDecimal(divisor); 
 // 使用BigDecimal进行除法计算,并指定保留两位小数和舍入方式
BigDecimal resultBigDecimal = dividendBigDecimal.divide(divisorBigDecimal, 2, RoundingMode.HALF_UP);
// 输出结果的字符串形式
System.out.println(resultBigDecimal.toString()); 

3、BigDecimal加减乘除计算

package com.smcv.yl.tms.platform.util;

import java.math.BigDecimal;


public class DoubleUtil {
    /**
     * double 相加
     * @param d1
     * @param d2
     * @return
     */
    public static double sum(double d1,double d2){
        BigDecimal bd1 = new BigDecimal(Double.toString(d1));
        BigDecimal bd2 = new BigDecimal(Double.toString(d2));
        return bd1.add(bd2).doubleValue();
    }

    /**
     * double 相减
     * @param d1
     * @param d2
     * @return
     */
    public static double sub(double d1,double d2){
        BigDecimal bd1 = new BigDecimal(Double.toString(d1));
        BigDecimal bd2 = new BigDecimal(Double.toString(d2));
        return bd1.subtract(bd2).doubleValue();
    }

    /**
     * double 乘法
     * @param d1
     * @param d2
     * @return
     */
    public static double mul(double d1,double d2){
        BigDecimal bd1 = new BigDecimal(Double.toString(d1));
        BigDecimal bd2 = new BigDecimal(Double.toString(d2));
        return bd1.multiply(bd2).doubleValue();
    }

    /**
     * double 除法
     * @param d1
     * @param d2
     * @param scale 四舍五入 小数点位数
     * @return
     */
    public static double div(double d1,double d2,int scale){
        // 调用方法前,判断分母是否为0
        BigDecimal bd1 = new BigDecimal(Double.toString(d1));
        BigDecimal bd2 = new BigDecimal(Double.toString(d2));
        return bd1.divide(bd2,scale,BigDecimal.ROUND_HALF_UP).doubleValue();
    }

    /**
     * double 转 string 去掉后面的0
     * @param i
     * @return
     */
    public static String getString(double i){
        String s = String.valueOf(i);
        if(s.indexOf(".") > 0){
            //正则表达
            s = s.replaceAll("0+?$", ""); // 去掉后面无用的零
            s = s.replaceAll("[.]$", ""); // 如小数点后面全是零则去掉小数点
        }
        return s;
    }

   
    /**
     * 数字转换为千位符
     * @param number
     * @return
     */
    public static String numberToBits(String number){
        String begin="";
        String end="";
        String[] num=number.split("\\.");
        if(num.length>1){
            begin=num[0];
            end=num[1];
        }else{
            begin=number;
        }
        return begin.replaceAll("(?<=\\d)(?=(?:\\d{3})+$)", ",")+"."+end;
    }

    public static void main(String[] args) {
        String i=numberToBits("10000000.01");
        System.out.println(i);
    }


}

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐