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

代码:

复制代码
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 @   王晓鸣  阅读(927)  评论(1编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示