数字格式化操作主要针对的是浮点型数据,包括double型和float型数据。
在Java中没有格式化的数据遵循以下原则;
如果数据绝对值大于0.001并且小于10000000,使以常规小数形式显示。
如果数据绝对值小于0.001或者大于10000000,使用科学记数法表示。
DecimalFormat是NumberFormat的一个子类,用于格式化十进制数字。
表9.1 DecimalFormat类中特殊字符说明
字符 |
说明 |
0 |
代表阿拉伯数字,使用特殊字符“0”表示数字的一位阿拉伯数字,如果该为不存在数字,则显示0 |
# |
代表阿拉伯数字,使用特殊字符“#”表示数字的一位阿拉伯数字,如果该位存在数字,则显示字符;如果该位不存在数字,则不显示 |
. |
小数分隔符或货币小数分隔符 |
- |
负号 |
, |
分组分隔符 |
E |
分割科学记数法中的尾数和指数 |
% |
本符号放置在数字的前缀或后缀,将数字乘以100显示为百分数 |
\u2030 |
本符号放置在数字的前缀或后缀,将数字乘以1000显示为千分数 |
\u00A4 |
本符号放置在数字的前缀或后缀,作为货币记号 |
' |
本符号为单引号,当上述特殊字符出现在数字中时,应为特殊符号添加单引号,系统会将此符号视为普通符号处理 |
例题
创建类DecimalFormatSimpleDemo
import java.text.DecimalFormat;
/**
* 數字格式化
* @author 16276
*
*/
public class DecimalFormatSimpleDemo {
//使用实例化对象时设置格式化模式
static public void SimgleFormat(String pattren,double value) {
DecimalFormat myFormat = new DecimalFormat(pattren);//实例化DecimalFormat对象
String output = myFormat.format(value); //将数字进行格式化
System.out.println(value+" "+pattren+" "+output);
}
//使用applyPattern()方法对数字进行格式化
static public void UseApplyPaternMethodFormat(String pattern,double value) {
DecimalFormat myFormat = new DecimalFormat(); //实例化DecimalFormat对象
myFormat.applyPattern(pattern); //调用applyPattern()方法设置格式化模板
System.out.println(value+" "+pattern+" "+myFormat.format(value));
}
public static void main(String[] args) {
SimgleFormat("###,###.###", 123456.789); //调用静态SimgleFormat()方法
SimgleFormat("00000000.###kg", 123456.789); //在数字后加上单位
//按照格式模板格式化数字,不存在的位以0显示
SimgleFormat("000000.000", 123.78);
//调用静态UseApplyPatternMethodFormat()方法
UseApplyPaternMethodFormat("#.###%", 0.789); //将数字转换为百分数形式
UseApplyPaternMethodFormat("###.##", 123456.789); //将小数点后格式化为两位
UseApplyPaternMethodFormat("0.00\u2030", 0.789); //将数字转化为千分数形式
}
}
123456.789 ###,###.### 123,456.789
123456.789 00000000.###kg 00123456.789kg
123.78 000000.000 000123.780
0.789 #.###% 78.9%
123456.789 ###.## 123456.79
0.789 0.00‰ 789.00‰
创建类DecimalMethod
import java.text.DecimalFormat;
public class DecimalMethod {
public static void main(String[] args) {
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);
}
}
将数字以每两个数字分组12,34,56.789
不允许数字分组123456.789
网友评论