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 }
下一篇: Java-IO
推荐阅读