天天看点

Java基础知识强化107:DecimalFormat

1. 引入:

如何控制输出数据的精度?

>1. 使用Math.round方法

(1)Java如何把一个float(double)四舍五入到小数点后2位,4位,或者其它指定位数 ?

答:比如,如下案例:

float a = 123.2354f;

float b = (float)(Math.round(a*100))/100   // 输出123.24

如果想要3位就是把2个100都换成1000

(2)根据上面的规律,我们可以定义一个方法,专门用来四舍五入浮点数特定位数:

运行调试:

>2. 使用String.format(String pattern)方法

输出为:

Java基础知识强化107:DecimalFormat

备注:

%.2f     %. 表示小数点前任意位数   2 表示两位小数    f 表示格式后的结果为浮点型

2. 其实Java提供了数据格式化的类---DecimalFormat,下面就说一下DecimalFormat的使用:

(1)首先介绍一下各种符号的含义:

0   一个数字 

#   一个数字,不包括 0 

.   小数的分隔符的占位符 

,   分组分隔符的占位符 

;   分隔格式。 

-   缺省负数前缀。 

%  乘以100 和作为百分比显示 

?      乘以1000 和作为千进制货币符显示;用货币符号代替;如果双写,用国际货币符号代替。如果出现在一个模式中,用货币十进制分隔符代替十进制分隔符。 

X    前缀或后缀中使用的任何其它字符,用来引用前缀或后缀中的特殊字符。 

(2)特别的,对 '0' 和 '#' 的区别重点讲一下,如下:

0: 

    比实际数字的位数多,不足的地方用0补上。

    new DecimalFormat("00.00").format(3.14)  //结果:03.14

    new DecimalFormat("0.000").format(3.14)  //结果: 3.140

    new DecimalFormat("00.000").format(3.14)  //结果:03.140

    比实际数字的位数少:整数部分不改动,小数部分,四舍五入

    new DecimalFormat("0.000").format(13.146)  //结果:13.146

    new DecimalFormat("00.00").format(13.146)  //结果:13.15

    new DecimalFormat("0.00").format(13.146)  //结果:13.15

#: 

    比实际数字的位数多,不变。

    new DecimalFormat("##.##").format(3.14)  //结果:3.14

    new DecimalFormat("#.###").format(3.14)  //结果: 3.14

    new DecimalFormat("##.###").format(3.14)  //结果:3.14

    new DecimalFormat("#.###").format(13.146)  //结果:13.146

    new DecimalFormat("##.##").format(13.146)  //结果:13.15

    new DecimalFormat("#.##").format(13.146)  //结果:13.15

(3)使用DecimalFormat的示例代码,如下:

运行结果,如下:

Java基础知识强化107:DecimalFormat