`
jythoner
  • 浏览: 608070 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java中格式化输出数字

    博客分类:
  • 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.text.DecimalFormat学习笔记


例子:
import java.text.*;

public class Untitled1    {
   public static void main(String[] args) {

     //---------------------------------------------
     //定义一个数字格式化对象,格式化模板为".##",即保留2位小数.
     DecimalFormat a = new DecimalFormat(".##");
     String s= a.format(333.335);
     System.err.println(s);
     //说明:如果小数点后面不够2位小数,不会补零.参见Rounding小节
     //---------------------------------------------

     //-----------------------------------------------
     //可以在运行时刻用函数applyPattern(String)修改格式模板
     //保留2位小数,如果小数点后面不够2位小数会补零
     a.applyPattern(".00");
     s = a.format(333.3);
     System.err.println(s);
     //------------------------------------------------

     //------------------------------------------------
     //添加千分号
     a.applyPattern(".##\u2030");
     s = a.format(0.78934);
     System.err.println(s);//添加千位符后,小数会进三位并加上千位符
     //------------------------------------------------

     //------------------------------------------------
     //添加百分号
     a.applyPattern("#.##%");
     s = a.format(0.78645);
     System.err.println(s);
     //------------------------------------------------

    //------------------------------------------------
     //添加前、后修饰字符串,记得要用单引号括起来
     a.applyPattern("'这是我的钱$',###.###'美圆'");
     s = a.format(33333443.3333);
     System.err.println(s);
     //------------------------------------------------

      //------------------------------------------------
     //添加货币表示符号(不同的国家,添加的符号不一样
     a.applyPattern("\u00A4");
     s = a.format(34);
     System.err.println(s);
     //------------------------------------------------

     //-----------------------------------------------
     //定义正负数模板,记得要用分号隔开
      a.applyPattern("0.0;'@'-#.0");
      s = a.format(33);
      System.err.println(s);
      s = a.format(-33);
      System.err.println(s);
      //-----------------------------------------------
   
     //综合运用,正负数的不同前后缀
     String pattern="'my moneny'###,###.##'RMB';'ur money'###,###.##'US'";
     a.applyPattern(pattern);
     System.out.println(a.format(1223233.456));
   }
}

总结:
要生成一个DecimalFormat对象,一般只要通过NumberFormat类工厂的getInstance()来取得一个NumberFormat对象再将其转换成DecimalFormat对象,然后通过DecimalForat对象的applyPattern()来动态改变数据的现示格式模板,通过format()方法取得格式化后的数字。同时,DecimalFormat提供了许多的方法来返回格式化后的数字的某一部份,这些方法如:getNegativeSuffix()。这个类的难点主要是在模板的书写及理解上。其实主要的就是针对一个数字的正负形式来设定不同的格式显示。这里要特别注意的是使用在模板上的特殊字符代表有特殊的意义,如下表所示:
Symbol    Description
0    a digit
#    a digit, zero shows as absent
.    placeholder for decimal separator
,    placeholder for grouping separator
E   separates mantissa and exponent for exponential formats
;    separates formats
-    default negative prefix
%    multiply by 100 and show as percentage
?    multiply by 1000 and show as per mille
¤    currency sign; replaced by currency symbol; if doubled, replaced by international currency symbol; if present in a pattern, the monetary decimal separator is used instead of the decimal separator 
X    any other characters can be used in the prefix or suffix
'    used to quote special characters in a prefix or suffix

例如:如果模板中含有#,意思是指这个#号可代表一个或多个数字如果该位的数字是零的话则省略该位。另:注意“#,##0.0#;(#)”这个模板的意思是指数字的负数形式跟正数的一样。
分享到:
评论

相关推荐

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

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

    java 格式化输出数字的方法

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

    java中数字格式化输出

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

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

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

    JAVA格式输出,JAVA格式输出

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

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

    本文将详细探讨Java中的字符串、日期以及数字的格式化输出技术,特别是针对初学者如何理解和掌握这些基本操作。 #### 二、Java字符串格式化输出 在Java中,`System.out.println()` 是最常用的打印输出语句,但当...

    java 格式化数字 NumberUtil

    在Java编程中,格式化数字是一项常见的任务,用于将数字以特定的样式显示,以便于人类阅读和理解。`NumberUtil` 类很可能就是一个专门用来处理数字格式化的工具类。在这个类中,通常会包含方法来处理小数和整数的...

    Java数字、货币值和百分数等的格式化处理

    在给出的代码示例中,可以看到如何使用`NumberFormat`进行格式化输出: - 首先,程序输出未格式化的数字。 - 然后,使用本地默认的`NumberFormat`格式化该数字,并打印结果。 - 接着,使用`getCurrencyInstance()`...

    java对输入的人民币进行格式化

    格式化人民币,能将您输入的数字格式化成人民币类型,欢迎下载。

    Java_格式化字符串 汇总

    Java中的字符串格式化功能是处理和展示数据时不可或缺的一部分,尤其在需要将各种数据类型转换为特定格式的字符串时显得尤为重要。本文将深入探讨Java中`String`类的`format()`方法,及其如何用于创建格式化的字符串...

    Java 格式化输出 printf 例子.zip_moneytzb

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

    与众不同的 Java 日期格式化大全

    在 Java 中,我们通常使用 `java.text.SimpleDateFormat` 类来处理日期和时间字符串的格式化。 日期格式化基础 在 Java 中,我们可以使用 `java.text.SimpleDateFormat` 类的 `format` 方法将日期对象格式化为符合...

    java字符串格式化String.format()

    这种方法类似于C语言中的`printf`函数,允许开发者通过指定格式化字符串来控制输出的布局。本文将详细介绍如何使用`String.format()`来进行各种数据类型的格式化。 #### 二、基本语法 `String.format()`有两种主要...

    常用技巧 Java开发 从控制台输出数据

    System.out.printf()方法是 Java 中另一种控制台输出方法,该方法可以进行格式化输出,功能类似于 C 语言中的 printf()函数。使用 System.out.printf()方法可以根据需要输出不同类型的数据,例如字符串、字符、整型...

    JAVA发送邮件实现,消息格式化

    这篇文章可能更深入地探讨了`MessageFormat`的用法,包括如何处理复杂的格式规范、格式化数字、日期和时间,以及在多语言环境中使用`MessageFormat`等。 总结来说,Java发送邮件涉及到JavaMail API的使用,其中`...

    实现Java的数字格式化工具类

    在Java中使用java.text.DecimalFormat格式化数字为指定形式后输出,以满足实际需要;DecimalFormat类是NumberFormat类的一个子类,用于格式化十进制数字,可以将数字格式化为整数、浮点数、百分比数等,并且可以为要...

    Java日期格式化及其使用例子

    在Java编程中,日期处理是一项常见的任务,涉及到各种日期格式化、转换以及与数据库交互的操作。以下是关于Java日期处理的一些关键知识点,主要基于标题、描述和提供的代码示例。 1. **SimpleDateFormat**: `...

    java字符格式化

    Java 字符格式化是编程中常见的一种操作,用于将各种数据类型转换成字符串,并按照特定的格式进行展示。在 Java 中,`String` 类提供了一个名为 `format()` 的方法,这个方法可以用来创建格式化的字符串,类似于 C ...

    java字符串类型数字设置千分位分隔

    它是`java.text`包下的一个类,主要用于格式化十进制数字。它提供了丰富的功能,如设置数字的精度、添加千分位分隔符等。创建一个`DecimalFormat`实例后,我们可以使用`format()`方法将数字转换为字符串。 下面是一...

Global site tag (gtag.js) - Google Analytics