Java基础知识强化107:DecimalFormat

1. 引入:java

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

>1. 使用Math.round方法app

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

答:好比,以下案例:调试

float a = 123.2354f;code

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

若是想要3位就是把2个100都换成1000blog

 

(2)根据上面的规律,咱们能够定义一个方法,专门用来四舍五入浮点数特定位数ci

 1 package com.himi.test1;  2 
 3 public class CubeRootDemo {  4 
 5     public static void main(String[] args) {  6 
 7         //
 8         // Scanner sc = new Scanner(System.in);  9         //
10         // float number = sc.nextFloat(); 11         //
12         // float result = (float)(Math.round((float)Math.cbrt(number)*10))/10; 13         //
14         // System.out.println(result);
15 
16         System.out.println(roundByDigit(123.2354, 2)); 17  } 18 
19     /**
20  * 21  * @param number 22  * 须要四舍五入的数据 23  * @param digit 24  * 精确到小数点后面的位数 25      */
26     private static double roundByDigit(double number, int digit) { 27         // double temp = Math.pow(10, digit); 28         //
29         // double result = (double)Math.round(number*temp)/temp;
30 
31         return (double) Math.round(number * Math.pow(10, digit)) / Math.pow(10, digit); 32 
33  } 34 
35 }

运行调试:字符串

 

 

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

 

 1 package com.himi.test5;  2 
 3 public class Main5 {  4     public static void main(String[] args) {  5 
 6         double d = 3.1415926;  7         System.out.println(String.format("%.2f", d));  8             
 9         
10  } 11 
12 }

 

输出为:

备注:

%.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的示例代码,以下:

 1 package com.himi.test5;  2 
 3 import java.text.DecimalFormat;  4 
 5 public class Main4 {  6     public static void main(String[] args) {  7 
 8         DecimalFormat df1 = new DecimalFormat("0.0");  9         System.out.println(df1.format(12.34)); 10 
11         DecimalFormat df2 = new DecimalFormat("#.#"); 12         System.out.println(df2.format(12.34)); 13 
14         DecimalFormat df3 = new DecimalFormat("000.000"); 15         System.out.println(df3.format(12.34)); 16 
17         DecimalFormat df4 = new DecimalFormat("###.###"); 18         System.out.println(df4.format(12.34)); 19 
20         System.out.println("------------分组输出------------------"); 21         DecimalFormat df5 = new DecimalFormat("###,###.0000"); 22         System.out.println(df5.format(111111123456.12)); 23 
24         DecimalFormat df6 = new DecimalFormat("##,###.000"); 25         System.out.println(df6.format(111111123456.12)); 26 
27         DecimalFormat df7 = new DecimalFormat("##,###.000"); 28         System.out.println(df6.format(11112345.1237)); 29 
30         
31         System.out.println("---------------科学计数法---------------"); 32 
33         DecimalFormat df8 = new DecimalFormat("0.000E0000"); 34         System.out.println(df8.format(10000)); 35         System.out.println(df8.format(12345678.345)); 36 
37         System.out.println("---------------百分数的输出---------------"); 38         DecimalFormat df9 = new DecimalFormat("0000.0000%"); 39         System.out.println(df9.format(0.34567)); 40         System.out.println(df9.format(1.34567)); 41         
42         DecimalFormat df10= new DecimalFormat("#.####%"); 43         System.out.println(df10.format(0.78645)); 44         System.out.println(df10.format(1.34567)); 45         
46 
47         System.out.println("-----------添加前、后修饰字符串,记得要用单引号括起来-----------"); 48         DecimalFormat df11= new DecimalFormat(" '这是个人钱有',###.###'$' "); 49         System.out.println(df11.format(33333443.3333)); 50         
51         
52         
53         System.out.println("-----------添加货币表示符号-----------"); 54         DecimalFormat df12= new DecimalFormat(); 55         df12.applyPattern("###,###.##¥"); 56         System.out.println(df12.format(34)); 57         
58         
59         System.out.println("-----------定义正负数模板,记得要用分号隔开-----------"); 60         DecimalFormat df13= new DecimalFormat("00.000;-#.0"); 61         System.out.println(df13.format(345.567)); 62         System.out.println(df13.format(-345.567)); 63         
64             
65         
66  } 67 
68 }

运行结果,以下:

相关文章
相关标签/搜索