`

java格式化输出

阅读更多
在实际工作中,常常需要设定数字的输出格式,如以百分比的形式输出,或者设定小数位数等,现稍微总结如下。

  主要使用的类:java.text.DecimalFormat

  1。实例化对象,可以用如下两种方法:

  DecimalFormat df=(DecimalFormat)NumberFormat.getInstance();

  DecimalFormat df1=(DecimalFormat) DecimalFormat.getInstance();

  因为DecimalFormat继承自NumberFormat。

  2。设定小数位数

  系统默认小数位数为3,如:

  DecimalFormat df=(DecimalFormat)NumberFormat.getInstance();

  System.out.println(df.format(12.3456789));

  输出:12.346

  现在可以通过如下方法把小数为设为两位:

  df.setMaximumFractionDigits(2);

  System.out.println(df.format(12.3456789));

  则输出为:12.35

  3。将数字转化为百分比输出,有如下两种方法:

  (1)

  df.applyPattern("##.##%");

  System.out.println(df.format(12.3456789));

  System.out.println(df.format(1));

  System.out.println(df.format(0.015));

  输出分别为:1234.57%  100%    1.5%

  (2)

  df.setMaximumFractionDigits(2);

  System.out.println(df.format(12.3456789*100)+"%");

  System.out.println(df.format(1*100)+"%");

  System.out.println(df.format(0.015*100)+"%");

  输出分别为:

  1,234.57%   100%   1.5%

  4。设置分组大小

  DecimalFormat df1=(DecimalFormat) DecimalFormat.getInstance();

  df1.setGroupingSize(2);

  System.out.println(df1.format(123456789));

  输出:1,23,45,67,89

  还可以通过df1.setGroupingUsed(false);来禁用分组设置,如:

  DecimalFormat df1=(DecimalFormat) DecimalFormat.getInstance();

  df1.setGroupingSize(2);

  df1.setGroupingUsed(false);

  System.out.println(df1.format(123456789));

  输出:123456789

  5。设置小数为必须为2位

  DecimalFormat df2=(DecimalFormat) DecimalFormat.getInstance();

  df2.applyPattern("0.00");

  System.out.println(df2.format(1.2));

  输出:1.20

  有时我们需要控制输出的数字的格式,如何使用java的类库做到这个呢?

  也许你不关心格式,但是你需要关心你的程序可以在全世界通用,像下面的这样一个简单的语句是依赖地区的:

  System.out.println(1234.56);
java.text 包中的一些包可以处理这类问题。下面的简单范例使用那些类解决上面提出的问题:

  import java.text.NumberFormat;

  import java.util.Locale;

  public class DecimalFormat1 {

  public static void main(String args[]) {

  // 得到本地的缺省格式

  NumberFormat nf1 = NumberFormat.getInstance();

  System.out.println(nf1.format(1234.56));

  // 得到德国的格式

  NumberFormat nf2 =

  NumberFormat.getInstance(Locale.GERMAN);

  System.out.println(nf2.format(1234.56));

  }

  }

  如果你在美国,运行程序后输出:

  1,234.56

  1.234,56

  换句话说,在不同的地方使用不同的习惯表示数字。

  NumberFormat.getInstance()方法返回NumberFormat的一个实例(实际上是NumberFormat具体的一个子类,例如DecimalFormat), 这适合根据本地设置格式化一个数字。你也可以使用非缺省的地区设置,例如德国。然后格式化方法根据特定的地区规则格式化数字。这个程序也可以使用一个简单的形式:

  NumberFormat.getInstance().format(1234.56)

  但是保存一个格式然后重用更加有效。国际化是格式化数字时的一个大问题。

  另一个是对格式的有效控制,例如指定小数部分的位数,下面是解决这个问题的一个简单例子:

  import java.text.DecimalFormat;

  import java.util.Locale;

  public class DecimalFormat2 {

  public static void main(String args[]) {

  // 得到本地的缺省格式

  DecimalFormat df1 = new DecimalFormat("####.000");

  System.out.println(df1.format(1234.56));

  // 得到德国的格式

  Locale.setDefault(Locale.GERMAN);

  DecimalFormat df2 = new DecimalFormat("####.000");

  System.out.println(df2.format(1234.56));

  }

  }

  在这个例子中设置了数字的格式,使用像"####.000"的符号。这个模式意味着在小数点前有四个数字,如果不够就空着,小数点后有三位数字,不足用0补齐。程序的输出:

  1234.560

  1234,560

  相似的,也可以控制指数形式的格式,例如:

  import java.text.DecimalFormat;

  public class DecimalFormat3 {

  public static void main(String args[]) {

  DecimalFormat df = new DecimalFormat("0.000E0000");

  System.out.println(df.format(1234.56));

  }

  }

  输出:

  1.235E0003
对于百分数:

  import java.text.NumberFormat;

  public class DecimalFormat4 {

  public static void main(String args[]) {

  NumberFormat nf = NumberFormat.getPercentInstance();

  System.out.println(nf.format(0.47));

  }

  }

  输出:

  47%

  至此,你已经看到了格式化数字的几个不同的技术。另一方面,如何读取并解析包含格式化的数字的字符串?解析支持包含在NumberFormat中。例如:

  import java.util.Locale;

  import java.text.NumberFormat;

  import java.text.ParseException;

  public class DecimalFormat5 {

  public static void main(String args[]) {

  // 本地格式

  NumberFormat nf1 = NumberFormat.getInstance();

  Object obj1 = null;

  // 基于格式的解析

  try {

  obj1 = nf1.parse("1234,56");

  }

  catch (ParseException e1) {

  System.err.println(e1);

  }

  System.out.println(obj1);

  // 德国格式

  NumberFormat nf2 =

  NumberFormat.getInstance(Locale.GERMAN);

  Object obj2 = null;

  // 基于格式的解析

  try {

  obj2 = nf2.parse("1234,56");

  }

  catch (ParseException e2) {

  System.err.println(e2);

  }

  System.out.println(obj2);

  }

  }
这个例子分两部分,都是解析一个字符串:"1234,56"。第一部分使用本地格式解析,第二部分使用德国格式解析。当程序在美国运行,结果是:

  123456

  1234.56

  换句话说,"1234,56"在美国被认为是一个巨大的整数"123456"而在德国被认为是一个小数"1234.56"。

  还有格式化讨论的最后一个问题。在上面的例子中, DecimalFormat 和 NumberFormat 都被使用了。DecimalFormat 常用于获得很好的格式控制,而NumberFormat 常用于指定不同于本地的地区。如何结合两个类呢?

  答案围绕着这样的事实:DecimalFormat是NumberFormat的一个子类,其实例被指定为特定的地区。因此,你可以使用 NumberFormat.getInstance 指定一个地区,然后将结构强制转换为一个DecimalFormat对象。文档中提到这个技术可以在大多情况下适用,但是你需要用try/catch 块包围强制转换以防转换不能正常工作 (大概在非常不明显得情况下使用一个奇异的地区)。下面是一个这样的例子:

  import java.text.DecimalFormat;

  import java.text.NumberFormat;

  import java.util.Locale;

  public class DecimalFormat6 {

  public static void main(String args[]) {

  DecimalFormat df = null;

  // 得到一个NumberFormat 对象并

  // 强制转换为一个 DecimalFormat 对象

  try {

  df = (DecimalFormat)

  NumberFormat.getInstance(Locale.GERMAN);

  }

  catch (ClassCastException e) {

  System.err.println(e);

  }

  // 设置格式模式

  df.applyPattern("####.00000");

  // format a number

  System.out.println(df.format(1234.56));

  }

  }

  getInstance() 方法获得格式,然后调用applyPattern()方法设置格式模式,输出:

  1234,56000

  如果你不关心国际化,可以直接使用DecimalFormat
分享到:
评论

相关推荐

    Java 格式化输出 printf 例子.zip_moneytzb

    在Java编程语言中,`printf`方法是`PrintStream`类的一个重要成员,它提供了类似于C语言中的格式化输出功能。这个方法允许我们以灵活的方式控制输出内容的格式,包括精度、宽度、对齐方式等。`moneytzb`可能是指特定...

    Java格式化输出.txt

    Java格式化输出.txt

    java 格式化输出数字的方法

    在Java编程中,格式化输出数字是一项常见的任务,特别是在数据展示和报表生成中。`java.text.DecimalFormat` 类是Java提供的一个强大工具,用于精确控制数字的显示方式。以下是对标题和描述中所述知识点的详细解释:...

    Java格式化输出 format介绍

    char n='150cm'; System.out.format("身高:%s", n); 举个例子 只要在双引号填加自己想说的话就好了 逗号后用来输出变量 占位符 说明 %d 格式化输出整数 %f 格式化输出浮点数 ...%s 格式化输出字符串

    Java格式化Xml文件

    总结来说,Java格式化XML文件涉及的主要知识点有:XML解析器的使用,如`DocumentBuilderFactory`和`DocumentBuilder`;`TransformerFactory`和`Transformer`用于XML的转换,包括设置输出属性;以及`Source`和`Result...

    Java Sql 格式化工具

    对于独立使用,可以直接通过命令行运行jar包,比如使用`java -jar SQLinForm.jar <input_sql_file> <output_sql_file>`,其中`<input_sql_file>`是包含原始SQL的文件,`<output_sql_file>`则是格式化后SQL的输出文件...

    java组件开发(14) 格式化输出

    java组件开发(14) 格式化输出

    浅谈Java中格式化输出

    Java格式化输出 Java中格式化输出是指使用格式化字符串和参数列表来输出想要的结果。Java中提供了多种方式来实现格式化输出,如System.out.printf()方法、String.format()方法、java.util.Formatter类等。 格式化...

    Java字符串 日期 数字格式化输出-.doc

    Java 字符串日期数字格式化输出 Java 中的字符串日期数字格式化输出是一种常见的操作,特别是在数据输出和显示时。 Java 提供了多种方式来实现格式化输出,包括使用 NumberFormat、DecimalFormat 和 ...

    SQL格式化功能(JAVA代码)

    在给定的标题“SQL格式化功能(JAVA代码)”中,我们聚焦于一个特定的Java实现,它从Hibernate库中抽取了用于SQL格式化的功能,并且不依赖任何第三方jar包。 `Hibernate`是一个流行的Java ORM(对象关系映射)框架...

    JAVA格式输出,JAVA格式输出

    在Java编程语言中,控制输出...总结来说,`NumberFormat`和`java.math`包的`BigInteger`、`BigDecimal`类是Java中处理格式化输出和高精度计算的关键工具。它们提供了丰富的功能,确保了在各种场景下的灵活性和精度。

    java常规类型的输出格式化

    java常规类型的格式化.doc ) 。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

    java中数字格式化输出

    将浮点型数用美元符号和货币符号输出,用格式化的方式。还包括浮点型数据相除时,格式化输出结果。

    Java打印漂亮的SQL语句(被格式化的SQL语句)

    "标签"进一步强调了这个工具的关键特性,包括"Java输出漂亮的SQL语句",这意味着它是一个Java环境下的解决方案,能够集成到Java项目中,通过Java代码来调用和实现SQL语句的格式化。另一个标签"SQL格式化"则明确了它...

    java中时间格式化输出

    当前的系统时间的格式化输出,包括中国时间和美国时间,并且是按照不同的两种方式输出的.

    java日期格式化

    Java日期格式化是Java开发中常见的一项任务,它涉及到日期和时间的处理,尤其是在数据输入输出、用户界面显示以及数据库交互等场景。Java提供了一系列的类来帮助我们完成日期和时间的格式化工作,其中最常用的包括`...

    Java字符串 日期 数字格式化输出.doc

    Java编程语言中,字符串、日期和数字的格式化输出是一个重要的概念,特别是在处理用户界面输出或者数据记录时。虽然在C语言中可以使用`printf`函数进行格式化输出,但Java的标准输出`System.out.println()`并没有...

    谷歌java格式-重新格式化 Java 源代码以符合 Google Java 风格

    格式化程序可以作用于整个文件、有限行 ( --lines)、特定偏移量 ( --offset)、传递到标准输出(默认)或就地更改 ( --replace)。 要重新格式化特定补丁中更改的行,请使用 google-java-format-diff.py. 注意: ...

    java 代码格式化工具 使用sun标准格式

    3. 如果一切顺利, Jacobe 会按照Sun标准格式重新格式化`your_file.java`,并覆盖原文件,或者你可以选择输出到新的文件。 在实际开发中,为了保证代码风格的一致性,许多开发团队会在版本控制系统(如Git)的pre-...

    java训前考试

    1. **Java格式化输出**: 题目中的第一题涉及到了Java的格式化输出。`System.out.printf`方法用于格式化输出,其中`%7.3f`表示保留小数点后三位,总宽度为7的浮点数。因此,正确答案是`System.out.printf("|%7.3f| ...

Global site tag (gtag.js) - Google Analytics