欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java-Decimal

程序员文章站 2023-10-17 14:14:41
1 import java.math.BigDecimal; 2 import java.text.DecimalFormat; 3 import java.text.NumberFormat; 4 5 public class TestDecimal { 6 public static void ... ......
 1 import java.math.bigdecimal;
 2 import java.text.decimalformat;
 3 import java.text.numberformat;
 4 
 5 public class testdecimal {
 6     public static void main(string[] args) {
 7         /**
 8          * java.math.bigdecimal   该类型的数据精确度极高,适合做财务软件。  
 9          * 
10          * 构造方法:
11          *         bigdecimal(int)           创建一个具有参数所指定整数值的对象。   
12          *         bigdecimal(double)         创建一个具有参数所指定双精度值的对象。   
13          *         bigdecimal(long)        创建一个具有参数所指定长整数值的对象。   
14          *         bigdecimal(string)         创建一个具有参数所指定以字符串表示的数值的对象。 
15          * 
16          * 方法:
17          *         add(bigdecimal)            bigdecimal对象中的值相加,然后返回这个对象。   
18          *         subtract(bigdecimal)     bigdecimal对象中的值相减,然后返回这个对象。   
19          *         multiply(bigdecimal)      bigdecimal对象中的值相乘,然后返回这个对象。   
20          *         divide(bigdecimal)        bigdecimal对象中的值相除,然后返回这个对象。   
21          *         tostring()              将bigdecimal对象的数值转换成字符串。   
22          *         doublevalue()             将bigdecimal对象中的值以双精度数返回。   
23          *         floatvalue()            将bigdecimal对象中的值以单精度数返回。   
24          *         longvalue()             将bigdecimal对象中的值以长整数返回。   
25          *         intvalue()              将bigdecimal对象中的值以整数返回。  
26          */
27             
28         /**
29          * 加法运算:    使用add()方法,不能使用加号(+)运算
30          */
31         bigdecimal v1 = new bigdecimal(10);  //创建大数据对象
32         bigdecimal v2 = new bigdecimal(20);  
33         //必须调用方法执行加法运算.
34         bigdecimal v3 = v1.add(v2);  
35         system.out.println(v3); //30
36         
37         /**
38          * 乘法运算:    使用multiply()方法
39          * 
40          * numberformat:
41          * 由于numberformat类的format()方法可以使用bigdecimal对象作为其参数,
42          * 可以利用bigdecimal对超出16位有效数字的货币值,百分值,以及一般数值进行格式化控制。
43          */
44         numberformat currency = numberformat.getcurrencyinstance(); //建立货币格式化引用   
45         numberformat percent = numberformat.getpercentinstance();   //建立百分比格式化引用   
46         percent.setmaximumfractiondigits(3); //百分比小数点最多3位   
47           
48         bigdecimal loanamount = new bigdecimal("15000.48"); //贷款金额  
49         bigdecimal interestrate = new bigdecimal("0.008"); //利率     
50         bigdecimal interest = loanamount.multiply(interestrate); //相乘  
51       
52         system.out.println("贷款金额:\t" + currency.format(loanamount));   //  ¥15,000.48
53         system.out.println("利率:\t" + percent.format(interestrate));     //  0.8%
54         system.out.println("利息:\t" + currency.format(interest));        //  ¥120.00
55         
56         
57         /**
58          * bigdecimal是通过compareto() 来进行比较
59          */
60         bigdecimal a = new bigdecimal("1");
61         bigdecimal b = new bigdecimal("2");
62         bigdecimal c = new bigdecimal("1");
63         
64         //左边比右边大:返回1      相等:返回0      小于:返回-1
65         system.out.println(a.compareto(b));  // -1  
66         system.out.println(a.compareto(c));  // 0
67         system.out.println(b.compareto(c));  // 1
68         
69         /**
70          * numberformat:声明一个numberformat对象 ,得到默认的数字格式化显示
71          */
72         numberformat nf = numberformat.getinstance() ;    
73         system.out.println("格式化之后的数字:" + nf.format(10000000)); //10,000,000
74         system.out.println("格式化之后的数字:" + nf.format(1000.345)); //1,000.345
75         
76         /**
77          * decimalformat:
78          */
79         class formatdemo {
80             public void format1(string pattern,double value){  // 此方法专门用于完成数字的格式化显示 
81                 decimalformat df = null;              // 声明一个decimalformat类的对象 
82                 df = new decimalformat(pattern);      // 实例化对象,传入模板 
83                 string str = df.format(value);       // 格式化数字 
84                 system.out.println(str); 
85               } 
86         }
87         formatdemo demo = new formatdemo();     //格式化对象的类 
88         demo.format1("###,###.###",111222.34567);         //111,222.346
89         demo.format1("000,000.000",11222.34567);         //011,222.346
90         demo.format1("###,###.###¥",111222.34567);         //111,222.346¥
91         demo.format1("000,000.000¥",11222.34567);         //011,222.346¥
92         demo.format1("##.###%",0.345678);                 //34.568%
93         demo.format1("00.###%",0.0345678);                 //03.457%
94         demo.format1("###.###\u2030",0.345678);           //345.678‰
95     }
96 }
 1 import java.text.decimalformat;
 2 
 3 public class testdecimal2 {
 4     public static void main(string[] args) {
 5         /**
 6          * java.text.decimalformat
 7          * 关于数字格式化
 8          *     
 9          *     数字格式元素:
10          *         # 任意数字
11          *         , 千分位
12          *         . 小数点
13          *         0 不够补0
14          */
15         //需求1:加入千分位.
16         decimalformat df = new decimalformat("###,###");  //创建数字格式化对象
17         
18         //number-->string
19         string dec = df.format(1234567);      //格式化
20         system.out.println(dec);              //"1,234,567"
21         
22             
23         //需求2:加入千分位,保留2位小数
24         decimalformat df1 = new decimalformat("###,###.##");
25         string dec1 = df1.format(1234567.123); //格式化
26         system.out.println(dec1);              //"1,234,567.12"
27         
28            
29         //需求3:加入千分位,保留4位小数,并且不够补0
30         decimalformat df2 = new decimalformat("###,###.0000");
31         string dec2 = df2.format(1234567.123);  //格式化
32         system.out.println(dec2);   
33     }
34 }