案例 精确小数点后多少位的四种方法

代码:

package com.jc.test;

import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.text.NumberFormat;

/**
 * 精确小数点后多少位的四种方法
 * @author wang-xiaoming
 *
 */
public class TestPrecision {
    public static void main(String[] args) {
        double pi = Math.PI;
        
        // 方法一:调用decimalFormat,格式:.00
        System.out.println("decimalFormat.format(): " + new DecimalFormat(".00").format(pi));
        
        // 方法二:调用String类的format函数,格式:%.2f
        System.out.println("string.format(): " + String.format("%.2f", pi));
        
        // 方法三:调用bigDecimal,格式:2
        System.out.println("bigDecimal.doubleValue(): " + BigDecimal.valueOf(pi).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
        
        // 方法四:调用numberFormat,格式:2
        NumberFormat nf = NumberFormat.getNumberInstance();
        nf.setMaximumFractionDigits(2);
        System.out.println("numberFormat.format(): " + nf.format(pi));
        // 逗号分隔数字,适用于价格金额
        nf.setGroupingUsed(true);
        System.out.println("numberFormat.format() 逗号分隔: " + nf.format(1000000.123));
    }
    
}

结果:

decimalFormat.format(): 3.14
string.format(): 3.14
bigDecimal.doubleValue(): 3.14
numberFormat.format(): 3.1416
numberFormat.format() 逗号分隔: 1,000,000.0001

 扩展:使用String.format方法对数字格式化补零

/**
 * 根据数字获取三位补零结果
 * @param num
 * @return
 */
public static String getThreeFillZero(int num){
    return String.format("%3d", num).replaceAll(" ", "0");
}

 

posted @ 2019-12-09 13:42  王晓鸣  阅读(953)  评论(1)    收藏  举报