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

 

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号