掌握聚合最新动态了解行业最新趋势
API接口,开发服务,免费咨询服务

Java中DecimalFormat用法详解

在实际开发中,我们经常需要将数字转换为特定格式的字符串,例如货币格式、百分比格式等。DecimalFormat类位于java.text包中,提供了丰富的功能来满足这些需求。通过使用DecimalFormat类,我们可以轻松地对数字进行格式化,使其符合不同的显示需求。本文将详细介绍DecimalFormat类的各种用法,并提供相应的示例代码,帮助读者掌握这一重要工具。

一、DecimalFormat类的基本概念

DecimalFormat类是java.text包中的一个类,主要用于格式化和解析数字。通过DecimalFormat类,我们可以控制数字的显示方式,包括小数点的位置、舍入模式、千位分隔符等。

  1. 类定义

public class DecimalFormat extends NumberFormat

DecimalFormat类继承自NumberFormat类,后者是java.text包中的一个抽象类,提供了格式化和解析数字的基本功能。

  1. 构造方法

public DecimalFormat()
public DecimalFormat(String pattern)
public DecimalFormat(String pattern, DecimalFormatSymbols symbols)

默认构造方法创建一个没有特定格式模式的DecimalFormat对象。

第二个构造方法接受一个格式模式字符串,用于指定数字的格式。

第三个构造方法还接受一个DecimalFormatSymbols对象,用于自定义符号(如小数点、千位分隔符等)。

  1. 主要方法

format(double number):将数字格式化为字符串。

parse(String source):将格式化的字符串解析为数字。

applyLocalizedPattern(String pattern):应用本地化的格式模式。

applyPattern(String pattern):应用非本地化的格式模式。

二、DecimalFormat类的使用方法

了解了DecimalFormat类的基本概念后,接下来我们将详细介绍如何在Java程序中使用它。

  1. 基本格式化

import java.text.DecimalFormat;
public class Main {
    public static void main(String[] args) {
        double number = 123456.789;
        // 创建一个默认的DecimalFormat对象
        DecimalFormat df = new DecimalFormat();
        // 格式化数字
        String formattedNumber = df.format(number);
        System.out.println(formattedNumber);  // 输出:123456.789
        // 设置格式模式
        df.applyPattern("#,##0.00");
        formattedNumber = df.format(number);
        System.out.println(formattedNumber);  // 输出:123,456.79
    }
}

在这段代码中,我们首先创建了一个默认的DecimalFormat对象,然后使用默认的格式化方式输出数字。

接着,我们设置了一个新的格式模式#,##0.00,并通过该模式格式化数字。输出结果为123,456.79,其中#表示可选的数字,,表示千位分隔符,.00表示保留两位小数。

  1. 自定义格式符号

import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
import java.util.Locale;
public class Main {
    public static void main(String[] args) {
        double number = 123456.789;
        // 创建一个自定义的DecimalFormatSymbols对象
        DecimalFormatSymbols symbols = new DecimalFormatSymbols(Locale.US);
        symbols.setDecimalSeparator('.');
        symbols.setGroupingSeparator(',');
        // 创建一个DecimalFormat对象,并设置自定义的符号
        DecimalFormat df = new DecimalFormat("#,##0.00", symbols);
        // 格式化数字
        String formattedNumber = df.format(number);
        System.out.println(formattedNumber);  // 输出:123,456.79
    }
}

在这段代码中,我们创建了一个DecimalFormatSymbols对象,并设置了自定义的符号,如小数点和千位分隔符。

然后,我们创建了一个DecimalFormat对象,并将自定义的符号传递给它。

最后,我们使用该DecimalFormat对象格式化数字,并输出结果。

  1. 解析格式化的字符串

import java.text.DecimalFormat;
import java.text.ParseException;
public class Main {
    public static void main(String[] args) {
        String formattedNumber = "123,456.79";
        // 创建一个DecimalFormat对象
        DecimalFormat df = new DecimalFormat("#,##0.00");
        try {
            // 解析格式化的字符串
            double number = df.parse(formattedNumber).doubleValue();
            System.out.println(number);  // 输出:123456.79
        } catch (ParseException e) {
            e.printStackTrace();
        }
    }
}

在这段代码中,我们首先创建了一个DecimalFormat对象,并设置了格式模式。

然后,我们尝试将格式化的字符串"123,456.79"解析为数字。

如果解析成功,输出结果为123456.79;如果解析失败,则捕获异常并输出堆栈跟踪信息。

三、DecimalFormat类的高级用法

除了基本的格式化和解析功能外,DecimalFormat类还提供了许多高级用法,可以帮助开发者更好地管理和使用数字格式。

  1. 舍入模式

import java.math.RoundingMode;
import java.text.DecimalFormat;
public class Main {
    public static void main(String[] args) {
        double number = 123456.789;
        // 创建一个DecimalFormat对象,并设置舍入模式
        DecimalFormat df = new DecimalFormat("#,##0.00");
        df.setRoundingMode(RoundingMode.HALF_UP);
        // 格式化数字
        String formattedNumber = df.format(number);
        System.out.println(formattedNumber);  // 输出:123,456.79
    }
}

在这段代码中,我们创建了一个DecimalFormat对象,并设置了舍入模式为HALF_UP。

这种舍入模式表示四舍五入。输出结果为123,456.79。

  1. 符号和区域设置

import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
import java.util.Locale;
public class Main {
    public static void main(String[] args) {
        double number = 123456.789;
        // 创建一个DecimalFormat对象,并设置符号和区域设置
        DecimalFormat df = new DecimalFormat("#,##0.00");
        DecimalFormatSymbols symbols = new DecimalFormatSymbols(Locale.GERMAN);
        symbols.setDecimalSeparator(',');
        symbols.setGroupingSeparator('.');
        df.setDecimalFormatSymbols(symbols);
        // 格式化数字
        String formattedNumber = df.format(number);
        System.out.println(formattedNumber);  // 输出:123.456,79
    }
}

在这段代码中,我们创建了一个DecimalFormat对象,并设置了符号和区域设置为德语。

德语的千位分隔符为.,小数点为,。输出结果为123.456,79。

  1. 格式化货币

import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
import java.util.Locale;
public class Main {
    public static void main(String[] args) {
        double number = 123456.789;
        // 创建一个DecimalFormat对象,并设置货币格式
        DecimalFormat df = new DecimalFormat("#,##0.00");
        DecimalFormatSymbols symbols = new DecimalFormatSymbols(Locale.US);
        symbols.setCurrencySymbol("$");
        df.setDecimalFormatSymbols(symbols);
        df.setPositivePrefix("$ ");
        df.setNegativePrefix("($ ");
        // 格式化数字
        String formattedNumber = df.format(number);
        System.out.println(formattedNumber);  // 输出:$ 123,456.79
    }
}

在这段代码中,我们创建了一个DecimalFormat对象,并设置了货币格式。

我们设置了美元符号$作为货币符号,并设置了正数和负数的前缀。

输出结果为$ 123,456.79。

四、示例代码

为了更好地理解DecimalFormat类的用法,以下是一些具体的示例代码。

  1. 基本格式化

import java.text.DecimalFormat;
public class Main {
    public static void main(String[] args) {
        double number = 123456.789;
        // 创建一个默认的DecimalFormat对象
        DecimalFormat df = new DecimalFormat();
        // 格式化数字
        String formattedNumber = df.format(number);
        System.out.println(formattedNumber);  // 输出:123456.789
        // 设置格式模式
        df.applyPattern("#,##0.00");
        formattedNumber = df.format(number);
        System.out.println(formattedNumber);  // 输出:123,456.79
    }
}

这段代码展示了如何使用DecimalFormat类进行基本的数字格式化。

  1. 自定义格式符号

import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
import java.util.Locale;
public class Main {
    public static void main(String[] args) {
        double number = 123456.789;
        // 创建一个自定义的DecimalFormatSymbols对象
        DecimalFormatSymbols symbols = new DecimalFormatSymbols(Locale.US);
        symbols.setDecimalSeparator('.');
        symbols.setGroupingSeparator(',');
        // 创建一个DecimalFormat对象,并设置自定义的符号
        DecimalFormat df = new DecimalFormat("#,##0.00", symbols);
        // 格式化数字
        String formattedNumber = df.format(number);
        System.out.println(formattedNumber);  // 输出:123,456.79
    }
}

这段代码展示了如何使用DecimalFormat类自定义格式符号。

  1. 解析格式化的字符串

import java.text.DecimalFormat;
import java.text.ParseException;
public class Main {
    public static void main(String[] args) {
        String formattedNumber = "123,456.79";
        // 创建一个DecimalFormat对象
        DecimalFormat df = new DecimalFormat("#,##0.00");
        try {
            // 解析格式化的字符串
            double number = df.parse(formattedNumber).doubleValue();
            System.out.println(number);  // 输出:123456.79
        } catch (ParseException e) {
            e.printStackTrace();
        }
    }
}

这段代码展示了如何使用DecimalFormat类解析格式化的字符串。

  1. 舍入模式

import java.math.RoundingMode;
import java.text.DecimalFormat;
public class Main {
    public static void main(String[] args) {
        double number = 123456.789;
        // 创建一个DecimalFormat对象,并设置舍入模式
        DecimalFormat df = new DecimalFormat("#,##0.00");
        df.setRoundingMode(RoundingMode.HALF_UP);
        // 格式化数字
        String formattedNumber = df.format(number);
        System.out.println(formattedNumber);  // 输出:123,456.79
    }
}

这段代码展示了如何使用DecimalFormat类设置舍入模式。

  1. 符号和区域设置

import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
import java.util.Locale;
public class Main {
    public static void main(String[] args) {
        double number = 123456.789;
        // 创建一个DecimalFormat对象,并设置符号和区域设置
        DecimalFormat df = new DecimalFormat("#,##0.00");
        DecimalFormatSymbols symbols = new DecimalFormatSymbols(Locale.GERMAN);
        symbols.setDecimalSeparator(',');
        symbols.setGroupingSeparator('.');
        df.setDecimalFormatSymbols(symbols);
        // 格式化数字
        String formattedNumber = df.format(number);
        System.out.println(formattedNumber);  // 输出:123.456,79
    }
}

这段代码展示了如何使用DecimalFormat类设置符号和区域设置。

  1. 格式化货币

import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
import java.util.Locale;
public class Main {
    public static void main(String[] args) {
        double number = 123456.789;
        // 创建一个DecimalFormat对象,并设置货币格式
        DecimalFormat df = new DecimalFormat("#,##0.00");
        DecimalFormatSymbols symbols = new DecimalFormatSymbols(Locale.US);
        symbols.setCurrencySymbol("$");
        df.setDecimalFormatSymbols(symbols);
        df.setPositivePrefix("$ ");
        df.setNegativePrefix("($ ");
        // 格式化数字
        String formattedNumber = df.format(number);
        System.out.println(formattedNumber);  // 输出:$ 123,456.79
    }
}

这段代码展示了如何使用DecimalFormat类进行货币格式化。

Java中DecimalFormat用法详解

综上所述,DecimalFormat类是Java中用于格式化和解析数字的重要工具。本文详细介绍了DecimalFormat类的基本概念、使用方法以及高级用法,并提供了相应的示例代码。通过理解和应用这些知识,读者可以更好地掌握如何在Java程序中格式化数字,使其符合不同的显示需求。希望本文的内容能够帮助读者在实际项目中有效地使用DecimalFormat类,实现更高效、更美观的数字显示效果。

声明:所有来源为“聚合数据”的内容信息,未经本网许可,不得转载!如对内容有异议或投诉,请与我们联系。邮箱:marketing@think-land.com

  • 全球天气预报

    支持全球约2.4万个城市地区天气查询,如:天气实况、逐日天气预报、24小时历史天气等

    支持全球约2.4万个城市地区天气查询,如:天气实况、逐日天气预报、24小时历史天气等

  • 购物小票识别

    支持识别各类商场、超市及药店的购物小票,包括店名、单号、总金额、消费时间、明细商品名称、单价、数量、金额等信息,可用于商品售卖信息统计、购物中心用户积分兑换及企业内部报销等场景

    支持识别各类商场、超市及药店的购物小票,包括店名、单号、总金额、消费时间、明细商品名称、单价、数量、金额等信息,可用于商品售卖信息统计、购物中心用户积分兑换及企业内部报销等场景

  • 涉农贷款地址识别

    涉农贷款地址识别,支持对私和对公两种方式。输入地址的行政区划越完整,识别准确度越高。

    涉农贷款地址识别,支持对私和对公两种方式。输入地址的行政区划越完整,识别准确度越高。

  • 人脸四要素

    根据给定的手机号、姓名、身份证、人像图片核验是否一致

    根据给定的手机号、姓名、身份证、人像图片核验是否一致

  • 个人/企业涉诉查询

    通过企业关键词查询企业涉讼详情,如裁判文书、开庭公告、执行公告、失信公告、案件流程等等。

    通过企业关键词查询企业涉讼详情,如裁判文书、开庭公告、执行公告、失信公告、案件流程等等。

0512-88869195
数 据 驱 动 未 来
Data Drives The Future