查看: 2226|回复: 0

[Java语言] DecimalFormat数字格式化用法详解

发表于 2018-4-16 08:00:05

DecimalFormat 是 NumberFormat 的一个具体子类,用于格式化十进制数字。
DecimalFormat 包含一个模式 和一组符号

符号含义:

下列字符用在非本地化的模式中。已本地化的模式使用从此 formatter 的 DecimalFormatSymbols 对象中获得的相应字符,这些字符已失去其特殊状态。两种例外是货币符号和引号,不将其本地化。

  1. import java.text.DecimalFormat;
  2. public class TestDecimalFormat {
  3. public static void main(String[] args) {
  4. DecimalFormat df = new DecimalFormat();
  5. double data = 1203.405607809;
  6. System.out.println("格式化之前:" + data);
  7. String pattern = "0.0";//1203.4
  8. df.applyPattern(pattern);
  9. System.out.println("采用" + pattern + "模式格式化后:" + df.format(data));
  10. // 可以在模式后加上自己想要的任何字符,比如单位
  11. pattern = "00000000.000kg";//00001203.406kg
  12. df.applyPattern(pattern);
  13. System.out.println("采用" + pattern + "模式格式化后:" + df.format(data));
  14. //#表示如果存在就显示字符,如果不存在就不显示,只能用在模式的两头
  15. pattern = "##000.000kg";//1203.406kg
  16. df.applyPattern(pattern);
  17. System.out.println("采用" + pattern + "模式格式化后:" + df.format(data));
  18. //-表示输出为负数,必须放在最前面
  19. pattern = "-000.000";//-1203.406
  20. df.applyPattern(pattern);
  21. System.out.println("采用" + pattern + "模式格式化后:" + df.format(data));
  22. //,是分组分隔符 :输出结果12,03.41
  23. pattern = "-0,00.0#";//-12,03.41
  24. df.applyPattern(pattern);
  25. System.out.println("采用" + pattern + "模式格式化后:" + df.format(data));
  26. //E表示输出为指数,”E“之前的字符串是底数的格式,之后的是指数的格式。
  27. pattern = "0.00E000";//1.20E003
  28. df.applyPattern(pattern);
  29. System.out.println("采用" + pattern + "模式格式化后:" + df.format(data));
  30. //%表示乘以100并显示为百分数,要放在最后
  31. pattern = "0.00%";//120340.56%
  32. df.applyPattern(pattern);
  33. System.out.println("采用" + pattern + "模式格式化后:" + df.format(data));
  34. //"\u2030"表示乘以1000并显示为千分数,要放在最后
  35. pattern = "0.00\u2030";//203405.61‰
  36. df.applyPattern(pattern);
  37. System.out.println("采用" + pattern + "模式格式化后:" + df.format(data));
  38. //"\u00A4"货币符号,要放在两端*****1203.41¥
  39. pattern = "0.00\u00A4";//1203.41¥
  40. df.applyPattern(pattern);
  41. System.out.println("采用" + pattern + "模式格式化后:" + df.format(data));
  42. //'用于在前缀或或后缀中为特殊字符加引号,要创建单引号本身,请连续使用两个单引号:"# o''clock"。
  43. pattern = "'#'#" ;//#1203
  44. // pattern = "'#'" ;//#1203
  45. df.applyPattern(pattern);
  46. System.out.println("采用" + pattern + "模式格式化后:" + df.format(data));
  47. pattern = "# o''clock" ;//1203 o'clock
  48. df.applyPattern(pattern);
  49. System.out.println("采用" + pattern + "模式格式化后:" + df.format(data));
  50. //''放在中间或后面单引号就显示在最后,放在最前面单引号就显示在最前
  51. // pattern = "# o''clock.000" ;//1203.406 o'clock
  52. // pattern = "# .000o''clock";//1203.406 o'clock
  53. // pattern = "# .000''";//1203.406 '
  54. // pattern = "# .''000";//1203.406 '
  55. pattern = "''# .000";//'1203.406
  56. df.applyPattern(pattern);
  57. System.out.println("采用" + pattern + "模式格式化后:" + df.format(data));
  58. }
  59. }
复制代码

输出结果为:

  1. 格式化之前:1203.405607809
  2. 采用0.0模式格式化后:1203.4
  3. 采用00000000.000kg模式格式化后:00001203.406kg
  4. 采用##000.000kg模式格式化后:1203.406kg
  5. 采用-000.000模式格式化后:-1203.406
  6. 采用-0,00.0#模式格式化后:-12,03.41
  7. 采用0.00E000模式格式化后:1.20E003
  8. 采用0.00%模式格式化后:120340.56%
  9. 采用0.00‰模式格式化后:1203405.61‰
  10. 采用0.00¤模式格式化后:1203.41¥
  11. 采用'#'#模式格式化后:#1203
  12. 采用# o''clock模式格式化后:1203 o'clock
  13. 采用''# .000模式格式化后:'1203.406
复制代码

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持程序员之家。



回复

使用道具 举报