在实际开发中,我们经常需要将数字转换为特定格式的字符串,例如货币格式、百分比格式等。DecimalFormat类位于java.text包中,提供了丰富的功能来满足这些需求。通过使用DecimalFormat类,我们可以轻松地对数字进行格式化,使其符合不同的显示需求。本文将详细介绍DecimalFormat类的各种用法,并提供相应的示例代码,帮助读者掌握这一重要工具。
DecimalFormat类是java.text包中的一个类,主要用于格式化和解析数字。通过DecimalFormat类,我们可以控制数字的显示方式,包括小数点的位置、舍入模式、千位分隔符等。
类定义
public class DecimalFormat extends NumberFormat
DecimalFormat类继承自NumberFormat类,后者是java.text包中的一个抽象类,提供了格式化和解析数字的基本功能。
构造方法
public DecimalFormat()
public DecimalFormat(String pattern)
public DecimalFormat(String pattern, DecimalFormatSymbols symbols)
默认构造方法创建一个没有特定格式模式的DecimalFormat对象。
第二个构造方法接受一个格式模式字符串,用于指定数字的格式。
第三个构造方法还接受一个DecimalFormatSymbols对象,用于自定义符号(如小数点、千位分隔符等)。
主要方法
format(double number):将数字格式化为字符串。
parse(String source):将格式化的字符串解析为数字。
applyLocalizedPattern(String pattern):应用本地化的格式模式。
applyPattern(String pattern):应用非本地化的格式模式。
了解了DecimalFormat类的基本概念后,接下来我们将详细介绍如何在Java程序中使用它。
基本格式化
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表示保留两位小数。
自定义格式符号
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对象格式化数字,并输出结果。
解析格式化的字符串
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类还提供了许多高级用法,可以帮助开发者更好地管理和使用数字格式。
舍入模式
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。
符号和区域设置
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。
格式化货币
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类的用法,以下是一些具体的示例代码。
基本格式化
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类进行基本的数字格式化。
自定义格式符号
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类自定义格式符号。
解析格式化的字符串
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类解析格式化的字符串。
舍入模式
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类设置舍入模式。
符号和区域设置
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类设置符号和区域设置。
格式化货币
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类进行货币格式化。
综上所述,DecimalFormat类是Java中用于格式化和解析数字的重要工具。本文详细介绍了DecimalFormat类的基本概念、使用方法以及高级用法,并提供了相应的示例代码。通过理解和应用这些知识,读者可以更好地掌握如何在Java程序中格式化数字,使其符合不同的显示需求。希望本文的内容能够帮助读者在实际项目中有效地使用DecimalFormat类,实现更高效、更美观的数字显示效果。
声明:所有来源为“聚合数据”的内容信息,未经本网许可,不得转载!如对内容有异议或投诉,请与我们联系。邮箱:marketing@think-land.com
支持全球约2.4万个城市地区天气查询,如:天气实况、逐日天气预报、24小时历史天气等
支持识别各类商场、超市及药店的购物小票,包括店名、单号、总金额、消费时间、明细商品名称、单价、数量、金额等信息,可用于商品售卖信息统计、购物中心用户积分兑换及企业内部报销等场景
涉农贷款地址识别,支持对私和对公两种方式。输入地址的行政区划越完整,识别准确度越高。
根据给定的手机号、姓名、身份证、人像图片核验是否一致
通过企业关键词查询企业涉讼详情,如裁判文书、开庭公告、执行公告、失信公告、案件流程等等。