应用很普遍
在java中,没有格式化的数字遵循以下原则:
若数据绝对值大于0.001且小于10000000,使用常规小数形式表示;
若数据绝对值小于0.001或大于10000000,使用科学计数法表示。
一般用DecimalFormat类进行格式化操作,用于格式化十进制数字。可以在实例化DecimalFormat对象时传递数字格式,也可以通过DecimalFormat类中的applyPattern()方法来实现数字格式化
DecimalFormat类中的特殊字符及其说明
字符 | 说明 |
---|---|
0 | 代表阿拉伯数字,使用特殊字符0表示数字的一位阿拉伯数字,若该位不存在数字,则显示0 |
# | 代表阿拉伯数字,使用特殊字符#表示数字的一位阿拉伯数字,若该位存在数字,则显示字符;若该位不存在数字,则不显示 |
. | 小数分隔符或或货币小数分隔符 |
- | 负号 |
, | 分组分隔符 |
E | 分隔科学计数法中的尾数和指数 |
% | 放置在数字的前缀或后缀,将数字乘以100显示为百分数 |
\u2030 | 放置在数字的前缀或后缀,将数字乘以1000显示为千分数 |
\u00A4 | 放置在数字的前缀或后缀,作为货币记号 |
' | 单引号,当上述特殊字符出现在数字中时,应为特殊符号添加单引号,系统会将此符号视为普通符号处理 |
import java.text.DecimalFormat; //使用实例化对象时设置格式化模式 static public void SimgleFormat(String pattern,double value){ DecimalFormat myFormat=new DecimalFormat(pattern);//实例化DecimalFormat对象 String output=myFormat.format(value); //将数字进行格式化 System.out.println(value+""+pattern+""+output); } //使用applyPattern()方法来实现数字格式化 static public void UseApplyPatternMethodFormat(String pattern,double value){ DecimalFormat myFormat = new DecimalFormat();//实例化DecimalFormat对象 myFormat.applyPattern(pattern); System.out.println(value+""+pattern+""+myFormat.format(value)); } public static void main(String[] args) { SimgleFormat("###,###.###",123456.789);//调用静态方法 SimgleFormat("00000000.###kg",123456.789);//在数字后加上单位 //按照格式模板格式化,不存在的位以0显示 SimgleFormat("000000.000",123.78); //调用静态UseApplyPatternMethodFormat()方法 UseApplyPatternMethodFormat("#.###%",0.789);//将数字转换为百分数形式 UseApplyPatternMethodFormat("###.##",123456.789);//将小数点后格式化为两位 UseApplyPatternMethodFormat("0.00\u2030",0.789);//将数字转换千分数形式 /* 123456.789###,###.###123,456.789 123456.78900000000.###kg00123456.789kg 123.78000000.000000123.780 0.789#.###%78.9% 123456.789###.##123456.79 0.7890.00‰789.00‰ */ }
还可以使用一些特殊方法来格式化数字
DecimalFormat myFormat=new DecimalFormat(); myFormat.setGroupingSize(2);//设置数字分组的大小 myFormat.setGroupingUsed(false);//设置是否支持分组
实例如下
import java.text.DecimalFormat; 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 */