关于DecimalFormat用法详解
2016-01-08 10:40 dream_er 阅读(1443) 评论(0) 编辑 收藏 举报关于 DecimalFormat用法详解
Java 1.6 API中这样定义:
DecimalFormat
是 NumberFormat
的一个具体子类,用于格式化十进制数字。该类设计有各种功能,使其能够解析和格式化任意语言环境中的数,包括对西方语言、
阿拉伯语和印度语数字的支持。它还支持不同类型的数,包括整数 (123)、定点数(123.4),科学记数法表示的数 (1.23E4)、百分数 (12%) 和金额 ($123)。所有这些内容都可以
本地化。
API中说了这么长一串,什么意思呢?简单来说,DecimalFormat 是 NumberFormat 的一个具体子类,用于格式化十进制数字。至于怎样格式化,仔细听我道来:
特殊符号含义:
0 一个数字
# 一个数字,不包括 0 ,但是也得视情况而定
. 小数的分隔符的占位符
, 分组分隔符的占位符
; 分隔格式,分隔正数和负数子模式。
- 减号或负号,自动在数字前加上负号。
% 将原结果乘以 100 和作为百分比显示(人家自动乘的哟,不用你管)
E 分隔科学计数法中的尾数和指数。在前缀或后缀中无需加引号。
例子:
请大家注意下面关于小数取舍的不同哟。
import java.text.DecimalFormat; public class test { public static void main(String[] args) { double b; b=100.45; //保留一位小数,四舍五入 System.out.println(new DecimalFormat("0.0").format(b)); //100.5 //保留一位小数,四射无入 System.out.println(new DecimalFormat("#.#").format(b)); //100.5 b=11.0023; //保留两位小数,四舍五入 System.out.println(new DecimalFormat("0.00").format(b)); //11.00 //保留两位小数,四射五入,但当末尾位0时,自动忽略 System.out.println(new DecimalFormat("#.##").format(b)); //11 b=20000.23456; //格式化分隔数字 System.out.println(new DecimalFormat("#,##,###.####").format(b)); //20,000.2346 b=0.23365; //按百分制输出,保留两位小数 System.out.println(new DecimalFormat("#.##%").format(b)); //23.36% b=0.23366; System.out.println(new DecimalFormat("#.##%").format(b)); //23.37% b=123.455; //将所有数字加上负号输出,保留两位小数 System.out.println(new DecimalFormat("-#.##").format(b)); //-123.45 b=-123.456; System.out.println(new DecimalFormat("-#.##").format(b)); //--123.46 b=0.00235; //按科学计数法输出,保留两位小数 System.out.println(new DecimalFormat("#.##E0").format(b)); //2.35E-3 b=0.00236; System.out.println(new DecimalFormat("#.##E0").format(b)); //2.36E-3 } }