- 浏览: 602005 次
- 性别:
- 来自: 北京
文章分类
最新评论
在实际工作中,常常需要设定数字的输出格式,如以百分比的形式输出,或者设定小数位数等,现稍微总结如下。
主要使用的类: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.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#;(#)”这个模板的意思是指数字的负数形式跟正数的一样。
发表评论
-
一个程序员的多年珍藏(1月23日最新更新)
2010-01-15 09:16 46862程序员珍藏的东西会是什么?呵呵,除了平时写的代码,就是那些百看 ... -
一个程序员的多年珍藏(python)
2010-01-14 12:07 16884程序员珍藏的东西会是什么?呵呵,除了平时写的代码,就是那些百看 ... -
网站架构(页面静态化,图片服务器分离,负载均衡)方案全解析
2010-01-05 08:31 45751、HTML静态化其实大家 ... -
Java基础学习笔记
2009-10-31 22:23 19621.Java语言的特点:面向对象,跨平台,多线程 2.Jav ... -
定时执行任务的三种方法
2009-07-02 22:58 2043定时执行任务的三种方法: 1)java.util.Timer ... -
Java定时执行
2009-07-02 22:53 568import java.util.Timer; impo ... -
Java连接MQ
2009-07-02 17:05 780首先,创建一个mqconnect.properties文件,内 ... -
jdbc连接DB2 9.5方法
2009-07-01 11:05 462最近在写一个关于db2的sample application, ... -
13个代码注释的小技巧
2009-03-31 08:43 1827这篇文章是由José M. Agui ... -
log4j配置文件的含义
2009-03-10 13:37 2996今天试着用了一下log4j来处理java中的日志,感觉良好,顺 ... -
Java Regex(Java正则表达式)
2009-03-10 13:35 4154在Sun的API中对在对 “最大匹配Greedy”“最小匹配R ... -
学习正则表达式最佳的材料
2009-03-05 14:05 1610import java.util.regex.Matcher; ... -
Java snippets02
2009-02-06 14:43 1524if (Character.isLowerCase(ch ... -
Java snippets01
2009-02-06 13:28 1726for (int i = 0; i < number. ... -
双色球算号器
2009-02-06 12:29 9526我是个彩民,特别喜欢买双色球。最近看了几种算法,写了一个很简单 ... -
关于用Java I/O 复制文件的问题
2009-02-05 17:12 3042今天遇到了一个极其郁闷的问题,想写一段代码,可以给window ... -
Java util之常用数据类型特性盘点
2009-02-02 12:43 1231java.util就相当于c++的STL ... -
一些常用的正则表达式
2009-02-02 12:34 1212正则表达式是一种通用 ... -
编程经典问题
2009-01-21 16:43 4723【程序1】 题目:古典 ... -
右键运行jar文件的方法
2009-01-08 12:11 9094经常需要运行一些打成jar文件格式的Java程序,每次都需要切 ...
相关推荐
将浮点型数用美元符号和货币符号输出,用格式化的方式。还包括浮点型数据相除时,格式化输出结果。
在实际工作中,常常需要设定数字的输出格式,如以百分比的形式输出,或者设定小数位数等,现稍微总结如下
Java字符串 日期 数字格式化输出.docJava字符串 日期 数字格式化输出.docJava字符串 日期 数字格式化输出.docJava字符串 日期 数字格式化输出.docJava字符串 日期 数字格式化输出.docJava字符串 日期 数字格式化输出...
java
格式化人民币,能将您输入的数字格式化成人民币类型,欢迎下载。
Java字符串_日期_数字格式化输出,特别适合初学者了解各个数据类型的操作和应用。
在Java中使用java.text.DecimalFormat格式化数字为指定形式后输出,以满足实际需要;DecimalFormat类是NumberFormat类的一个子类,用于格式化十进制数字,可以将数字格式化为整数、浮点数、百分比数等,并且可以为要...
java.io 通过数据流、序列化和文件系统提供系统输入和输出。 java.lang 提供利用 Java 编程语言进行程序设计的基础类。 java.lang.annotation 为 Java 编程语言注释设施提供库支持。 java.lang.instrument 提供...
代码如下:[removed]var format = function (number, form) { var forms = form.split(‘.’), number = ” + number, numbers = number.split(‘.’) , leftnumber = numbers[0].split(”) , exec = function ...
Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲区、写入数据到文件、关闭输入流、关闭套接字关闭输出流、输出错误信息等Java编程小技巧。 Java数组倒置...
Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲区、写入数据到文件、关闭输入流、关闭套接字关闭输出流、输出错误信息等Java编程小技巧。 Java数组倒置...
本文实例讲述了Python实现字符串格式化输出的方法。分享给大家供大家参考,具体如下: python属于强类型的语言,如果像java一样操作字符串和数字的“+”时,会出现TypeError。而python的格式化方法有多种,比如使用...
java.io 通过数据流、序列化和文件系统提供系统输入和输出。 java.lang 提供利用 Java 编程语言进行程序设计的基础类。 java.lang.annotation 为 Java 编程语言注释设施提供库支持。 java.lang.instrument 提供允许 ...
java.io 通过数据流、序列化和文件系统提供系统输入和输出。 java.lang 提供利用 Java 编程语言进行程序设计的基础类。 java.lang.annotation 为 Java 编程语言注释设施提供库支持。 java.lang.instrument 提供...
Date的输出结果是按照国际通用格式输出的,而中国更习惯于“年-月-日”的形式输出,这种特殊格式的输出需要用到Java格式化工具。 3. 格式化工具 格式化的目的是把一个对象以不同的格式表示,以满足不同环境对格式的...
Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲区、写入数据到文件、关闭输入流、关闭套接字关闭输出流、输出错误信息等Java编程小技巧。 Java数组倒置...
Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲区、写入数据到文件、关闭输入流、关闭套接字关闭输出流、输出错误信息等Java编程小技巧。 Java数组倒置...
Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲区、写入数据到文件、关闭输入流、关闭套接字关闭输出流、输出错误信息等Java编程小技巧。 Java数组倒置...
Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲区、写入数据到文件、关闭输入流、关闭套接字关闭输出流、输出错误信息等Java编程小技巧。 Java数组倒置...
微型Java库,用于格式化和解析罗马数字,该库来自各种StackOverflow帖子。 根据。 用法 格式化 格式化数字(仅1-3999): import com.github.fracpete.romannumerals4j.RomanNumeralFormat ; ... ...