Java格式化小数并保留两位小数的四种方法

 更新时间:2025年03月10日 09:54:03   作者:梦幻南瓜  
Java中格式化小数并保留两位小数的四种方法:使用DecimalFormat、String.format()、BigDecimal和NumberFormat,每种方法都有其适用场景和特点,文章通过代码示例介绍的非常详细,需要的朋友可以参考下

在Java中格式化小数并保留两位小数,可以通过以下几种方法实现:

1. 使用 DecimalFormat 类

import java.text.DecimalFormat;
import java.math.RoundingMode;

public class DecimalFormatExample {
    public static void main(String[] args) {
        double number = 3.1415;

        DecimalFormat df = new DecimalFormat("0.00");
        df.setRoundingMode(RoundingMode.HALF_UP); // 设置四舍五入模式

        String formatted = df.format(number);
        System.out.println(formatted); // 输出:3.14
    }
}

说明:

模式 “0.00”:强制保留两位小数,不足补零(例如 2.5 格式化为 2.50)。

RoundingMode.HALF_UP:四舍五入规则(3.145 → 3.15)。

2. 使用 String.format()

public class StringFormatExample {
    public static void main(String[] args) {
        double number = 3.1415;

        String formatted = String.format("%.2f", number);
        System.out.println(formatted); // 输出:3.14
    }
}

说明:

格式字符串 “%.2f”:自动保留两位小数,不足补零。

Locale 问题:默认使用系统区域设置,如需固定小数点符号为.,可指定 Locale.US:

String formatted = String.format(Locale.US, "%.2f", number);

3. 使用 BigDecimal(高精度计算)

import java.math.BigDecimal;
import java.math.RoundingMode;

public class BigDecimalExample {
    public static void main(String[] args) {
        double number = 3.145;

        BigDecimal bd = BigDecimal.valueOf(number);
        bd = bd.setScale(2, RoundingMode.HALF_UP);

        String formatted = bd.toString();
        System.out.println(formatted); // 输出:3.15
    }
}

说明:

BigDecimal.valueOf(number):避免直接使用 new BigDecimal(double) 导致的精度问题。

setScale(2, RoundingMode.HALF_UP):设置小数位数和舍入模式。

4. 使用 NumberFormat(本地化格式)

import java.text.NumberFormat;
import java.util.Locale;

public class NumberFormatExample {
    public static void main(String[] args) {
        double number = 1234.567;

        NumberFormat nf = NumberFormat.getInstance(Locale.US);
        nf.setMinimumFractionDigits(2);
        nf.setMaximumFractionDigits(2);

        String formatted = nf.format(number);
        System.out.println(formatted); // 输出:1,234.57(含千分位分隔符)
    }
}

说明:

setMinimumFractionDigits(2) 和 setMaximumFractionDigits(2):固定两位小数。

Locale.US:指定小数点符号为 .,千分位分隔符为 ,。

总结

方法适用场景特点
DecimalFormat灵活自定义格式(如货币、百分比)需设置模式,支持复杂格式
String.format()快速简单格式化代码简洁,适合基础需求
BigDecimal高精度计算(如金融场景)避免浮点数精度问题
NumberFormat本地化格式(如千分位分隔符)支持国际化,自动处理区域差异

以上就是Java格式化小数并保留两位小数的四种方法的详细内容,更多关于Java格式化小数并保留两位小数的资料请关注脚本之家其它相关文章!

相关文章

  • Java优雅的处理 null的方法和使用

    Java优雅的处理 null的方法和使用

    本文主要介绍了Java使用Optional优雅的处理null值,通过Optional替代繁杂的if判空处理逻辑,具有一定的参考价值,感兴趣的可以了解一下
    2025-08-08
  • SpringBoot启动太慢的7个优化技巧

    SpringBoot启动太慢的7个优化技巧

    项目越做越大,SpringBoot启动时间从几秒变成了30多秒,改一行代码等半分钟,效率太低了,今天分享7个优化技巧,亲测有效,大家可以根据需要进行选择
    2025-12-12
  • Java Process与Runtime()的使用及调用cmd命令阻塞的解决方案

    Java Process与Runtime()的使用及调用cmd命令阻塞的解决方案

    这篇文章主要介绍了Java Process与Runtime()的使用及调用cmd命令阻塞的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • SpringBoot详细讲解yaml配置文件的用法

    SpringBoot详细讲解yaml配置文件的用法

    这篇文章主要介绍了SpringBoot中的yaml配置文件问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • Spring mvc防止数据重复提交的方法

    Spring mvc防止数据重复提交的方法

    这篇文章主要为大家详细介绍了Spring mvc防止数据重复提交的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-11-11
  • SpringMVC之@InitBinder注解详解

    SpringMVC之@InitBinder注解详解

    这篇文章主要介绍了SpringMVC之@InitBinder注解详解,springmvc并不是能对所有类型的参数进行绑定的,如果对日期Date类型参数进行绑定,就会报错IllegalStateException错误,需要的朋友可以参考下
    2024-01-01
  • Spring整合消息队列RabbitMQ流程

    Spring整合消息队列RabbitMQ流程

    Spring整合RabbitMQ很容易,但是整合的目的是为了使用,那要使用RabbitMQ就要对其有一定的了解,不然容易整成一团浆糊。因为说到底,Spring只是在封装RabbitMQ的API,让其更容易使用而已,废话不多说,让我们一起整它
    2023-03-03
  • 解决FileWriter 写入文本不换行的问题

    解决FileWriter 写入文本不换行的问题

    这篇文章主要介绍了解决FileWriter 写入文本不换行的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • Java报错:java.lang.UnsatisfiedLinkError问题的解决办法

    Java报错:java.lang.UnsatisfiedLinkError问题的解决办法

    在Java开发中,java.lang.UnsatisfiedLinkError是一种与本地方法调用相关的常见异常,本文将详细分析这一异常的背景、可能的原因、错误代码示例、正确代码示例,以及编写代码时需要注意的事项,需要的朋友可以参考下
    2024-09-09
  • SpringBoot整合Lombok及常见问题解决

    SpringBoot整合Lombok及常见问题解决

    本文主要介绍了SpringBoot整合Lombok及常见问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-04-04

最新评论