Java中数字格式化

        在解决实际问题时,对数字的处理是非常普遍的,如数学问题、随机问题、商业货币问题、科学计数问题等。为了应对以上问题,Java提供了处理相关问题的类,包括DecimalFormat类(用于格式化数字)、Math类(为各种数学计算提供了工具方法)、Random类(为Java处理随机数问题提供了分钟方法)、BigInteger类与BigDecimal类(为所有大数字的处理提供了相应的数学运算操作方法)。

下面一一介绍这个数字处理类:

一、数字格式化

           在Java中使用java.text.DecimalFormat格式化数字。

 在Java中没有格式化的数据遵循以下原则:

1.如果数据绝对值大于0.001并且小于10000000,Java将以常规小数形式表示。

2.如果数据绝对值小于0.001或者大于10000000,使用科学记数法表示。

       DecimalFormat是NumberFormat的一个子类,用于格式化十进制数字。它可以将一些数字格式化为整数、浮点数、百分数等。通过使用该类可以为要输出的数字加上单位或控制数字的精度。一般情况下可以在实例化DecimalFormat对象时传递数字格式化,也可以通过DecimalFormat类中的applyPattern()方法来实现数字格式化。

                                             DecimalFormat类中的格式化模板中的特殊字符

字符 说明
0 代表阿拉伯数字,使用特殊字符“0”表示数字的一位阿拉伯数字,如果该位不存在数字,则显示0
# 代表阿拉伯数字,使用特殊字符“#”表示数字的一位阿拉伯数字,如果该位存在数字,则显示字符;如果该位不存在数字,则不显示
. 小数分隔符或货币小数分隔符
- 负号
分组分隔符
E 分隔科学记数法中的尾数和指数
% 本符号放置在数字的前缀或后缀,将数字乘以100显示为百分数
\u2030 本符号放置在数字的前缀或后缀,将数字乘以1000显示为千分数
\u00A4 本符号放置在数字的前缀或后缀,作为货币记号
' 本符号为单引号,当上述特殊字符出现在数字中时,应为特殊符号添加单引号,系统会将此符号视为普通符号处理
package hello;

import java.text.DecimalFormat;  //引入 类

public class DecimalFormatSimpleDemo {
	//使用实例化对象时设置格式模式
	static public void SimpleFormat(String pattern,double value) {
		DecimalFormat myFormat = new DecimalFormat(pattern);
		String output = myFormat.format(value);
		System.out.println(value+" "+pattern+" "+output);
	}
	
	//使用applyPattern()方法对数字进行格式化
	static public void UseApplyPatternMethodFormat(String pattern,double value) {
		DecimalFormat myFormat = new DecimalFormat();
		myFormat.applyPattern(pattern);
		System.out.println(value+" "+pattern+" "+myFormat.format(value));
	}
	
	public static void main(String[] args) {
		SimpleFormat("###,###.###",123456.789);
		SimpleFormat("00000000.###kg",123456.789);
		SimpleFormat("000000.000",123.78);
		UseApplyPatternMethodFormat("#.###%",0.789);
		UseApplyPatternMethodFormat("###.##",123456.789);
		UseApplyPatternMethodFormat("0.00\u2030",0.789);
	}
	
}

从以上两个方法的结果可以看出以“0” 特殊字符构成的模板进行格式化时,当数字某位不存在时,将显示0;而以“#” 特殊字符构成的模板进行格式化操作时,格式化后的数字位数与数字本身的位数一致。

在DecimalFormat类中除了可以设置格式化模式来格式化数字之外,还可以使用一些特殊方法对数字进行格式化设置。

DecimalFormat myFormat = new DecimalFormat(); //实例化DecimalFormat类对象
myFormat.setGroupingSize(2);				  //设置数字分组的大小
myFormat.setGroupingUsed(false);			  //设置是否支持分组


import java.text.DecimalFormat;

public class DeciamlMethod {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		DecimalFormat myFormat = new DecimalFormat();
		myFormat.setGroupingSize(2);		//设置将数字分组为2
		String output = myFormat.format(123456.789);
		System.out.println("将数字以每两个数字分组  "+output);
		myFormat.setGroupingUsed(false);	//设置不允许数字分组
		String output2 = myFormat.format(123456.789);
		System.out.println("不允许数字分组  "+output2);
	}

}

猜你喜欢

转载自blog.csdn.net/qq_41045071/article/details/81252051