文档章节

NumberFormat

JavaSon712
 JavaSon712
发布于 2017/05/30 19:32
字数 975
阅读 7
收藏 2
点赞 0
评论 0
package json712.study_javaio;

import java.math.RoundingMode;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.text.ParseException;
import java.util.Currency;
import java.util.Locale;
import java.util.ResourceBundle;

public class Test {
	public static void main(String[] args) {
		Test test=new Test();
		test.test();
		//test.testNumberFormat();
		test.testDecimalFormat();
	}

	public void test() {
		double d = 3.1415926;
		double d1 = 100.2;
		long l = 123456789;
		String s = "987,3.1415926";
		 NumberFormat nf = NumberFormat.getInstance();
		 nf.setMaximumFractionDigits(2);
		 nf.setMinimumFractionDigits(2);
		 nf.setMinimumIntegerDigits(2);
		 nf.setMaximumIntegerDigits(2);
		 System.out.println(nf.format(d));//03.14
		 System.out.println(nf.format(d1));//00.12
		DecimalFormat df = new DecimalFormat();
		// 0占位符:显示pattern规定的位数,没有用0补齐
		df.applyPattern("0.00");//3.14 100.20
		System.out.println("with pattern 0.00 :"+df.format(d));
		System.out.println("with pattern 0.00 :"+df.format(d1));
		df.applyPattern("000.0000");//003.1416 100.2000
		System.out.println("with pattern 000.0000 :"+df.format(d));
		System.out.println("with pattern 000.0000 :"+df.format(d1));
		df.applyPattern("000");//003 100
		System.out.println("with pattern 000 :"+df.format(d));
		System.out.println("with pattern 000 :"+df.format(d1));
		// #占位符:显示pattern规定的位数,没有无需补充
		df.applyPattern("##.###");//3.142 100.2
		System.out.println("with pattern ##.### :"+df.format(d));
		System.out.println("with pattern ##.### :"+df.format(d1));
		df.applyPattern("#");//3 100
		System.out.println("with pattern # :"+df.format(d));
		System.out.println("with pattern # :"+df.format(d1));
		// 以百分数形式显示
		df.applyPattern("#.00%");//314.16% 10020.00
		System.out.println("with pattern #.00% :"+df.format(d));
		System.out.println("with pattern #.00% :"+df.format(d1));
		df.applyPattern("#.#%");//314.2% 10020%
		System.out.println("with pattern #.#% :"+df.format(d));
		System.out.println("with pattern #.#% :"+df.format(d1));
		// 以千分数显示,并取三位小数,不够用0补齐
		df.applyPattern("#.000\u2030");//3141.593‰ 100200.000‰
		System.out.println("with pattern #.000\u2030 :"+df.format(d));
		System.out.println("with pattern #.000\u2030 :"+df.format(d1));
		// 添加分组分隔符 、负号
		df.applyPattern("-,###.##");//123,456,789
		System.out.println("with pattern -,###.## :"+df.format(l)); 
		// 嵌入文本
		df.applyPattern("看看-,###.##ok");//看看-123,456,789ok 看看-100.2ok
		System.out.println("with pattern 看看-,###.##ok :"+df.format(l)); 
		// 解析文本成Number
		Number n = null;
		try {
			nf=NumberFormat.getNumberInstance();
			n = nf.parse(s);// 9873.1415926
		} catch (ParseException e) {
			e.printStackTrace();
		}
		System.out.println("parse s:"+String.valueOf(n));
	}

	/**
	 * NumberFormat:public abstract class NumberFormat,是所有数值格式的抽象基类。
	 * 抽象类,获取实例:NumberFormat nf = NumberFormat.getInstance();
	 * 格式化数值:nf.format(number); 解析数值文本:nf.parse(strNumber);
	 * 主要作用体现在国际化格式规范定义,以及获取简单数值格式,具体格式约束通过其子类:DecimalFormat实现
	 */
	public void testNumberFormat() {
		double d = 3.1415926;
		int i = 123456;
		String s = "3.1415926";
		// NumberFormat
		NumberFormat nf = NumberFormat.getNumberInstance();// NumberFormat.getInstance()等效
		// 添加地区国际化语言
		nf.getInstance(Locale.CHINA);// getInstance(Locale.CHINA);
		Locale.setDefault(Locale.CHINA);// 设置JVM虚拟机默认语言格式
		// 获得整数格式
		nf.getIntegerInstance();
		// 获得百分数格式
		nf.getPercentInstance();
		// 获得货币格式
		nf.getCurrencyInstance();
		// 解析给定字符串开头的文本,生成一个数值
		try {
			nf.parse(s);
		} catch (ParseException e) {
			e.printStackTrace();
		}
		// 设置此格式中是否使用分组
		nf.setGroupingUsed(true);
		// 设置数的小数部分所允许的最大位数、最小位数,系统默认为三位小数
		nf.setMaximumFractionDigits(2);
		nf.setMinimumFractionDigits(2);
		// 设置正数部分所允许的最大位数、最小位数
		nf.setMaximumIntegerDigits(2);
		nf.setMinimumIntegerDigits(2);
		// 使用上面定义的nf,格式规范数字d
		String sd = nf.format(d);
	}

	/**
	 * DecimalFormat 是 NumberFormat 的一个具体子类,用于格式化十进制数字 要获取具体语言环境的
	 * NumberFormat(包括默认语言环境),可调用 NumberFormat 的某个工厂方法,如 getInstance()。 通常不直接调用
	 * DecimalFormat 的构造方法,因为 NumberFormat 的工厂方法可能返回不同于 DecimalFormat 的子类。
	 */
	public void testDecimalFormat() {
		String pattern = "";
		// 使用默认模式和默认语言环境的符号创建一个 DecimalFormat
		DecimalFormat df = new DecimalFormat();
		// 使用给定的模式和默认语言环境的符号创建一个 DecimalFormat
		DecimalFormat df1 = new DecimalFormat(pattern);
		// 通过继承获取
		DecimalFormat df2 = null;
		try {
			df2 = (DecimalFormat) NumberFormat.getInstance();
		} catch (ClassCastException e) {
			System.out.println(e);
		}
		// 为格式化对象添加格式模式
		df.applyPattern(pattern);
		// 使用分组,默认为true,并设置分组大小
		df.setGroupingUsed(true);
		df.setGroupingSize(3);
		// 设置负数前、后缀
		df.setNegativePrefix("-");
		df.setNegativeSuffix("%");
		// 设置正数前、后缀
		df.setPositivePrefix("+");
		df.setPositiveSuffix("%");
		// 使用方法控制小数位数、整数位数、货币格式
		df.setMaximumFractionDigits(2);
		df.setMinimumIntegerDigits(2);
		df.setCurrency(Currency.getInstance(Locale.CHINA));
		// 允许设置整数中小数分隔符的行为。(有小数时始终显示小数分隔符。true时,无小数也显示小数分隔符)
		df.setDecimalSeparatorAlwaysShown(false);
		// 设置小数的舍入模式,默认模式为RoundingMode.HALF_EVEN
		df.setRoundingMode(RoundingMode.HALF_EVEN);
		/*
		 * pattern的形式举例: 1、
		 */
		System.out.println("testDecimalFormat:"+df.format(12456789));
	}

}

运行结果:

03.14
00.20
with pattern 0.00 :3.14
with pattern 0.00 :100.20
with pattern 000.0000 :003.1416
with pattern 000.0000 :100.2000
with pattern 000 :003
with pattern 000 :100
with pattern ##.### :3.142
with pattern ##.### :100.2
with pattern # :3
with pattern # :100
with pattern #.00% :314.16%
with pattern #.00% :10020.00%
with pattern #.#% :314.2%
with pattern #.#% :10020%
with pattern #.000‰ :3141.593‰
with pattern #.000‰ :100200.000‰
with pattern -,###.## :-123,456,789
with pattern 看看-,###.##ok :看看-123,456,789ok
parse s:9873.1415926
testDecimalFormat:+12,456,789%


本文转载自:

共有 人打赏支持
JavaSon712
粉丝 10
博文 121
码字总数 23247
作品 0
延安
程序员
NumberFormat和DecimalFormat

调用NumberFormat的工厂方法,如getInstance(),来获取具体语言环境的NumberFormat(包括默认语言环境)。该类设计有各种功能,使其能够解析和格式化任意语言环境中的数,包括对西方语言、阿...

CrazyManDF
2016/10/14
9
0
DecimalFormat的几种用法!

package com.lee.test; import java.text.DecimalFormat; import java.util.Locale; /** * DecimalFormat的几种用法! * @author lee * @depict NumberFormat.getInstance()方法返回NumberF......

AnyLiem
2015/07/07
0
0
ExtJs表格导出Excl,采用data:application/vnd.ms-excel;base64,方式导出数据量大时导出时网络错误。导出失败!

function getMultiGrid2Excel(xml,title,worksheet){ return '' + '

T-tans
2016/10/13
984
1
NumberFormat用法记录

NumberFormat.getInstance()方法返回NumberFormat的一个实例(实际上是NumberFormat具体的一个子类,例如DecimalFormat), 这适合根据本地设置格式化一个数字。你也可以使用非缺省的地区设置,...

jeffsui
2013/05/30
0
0
JAVA中计算百分比 格式化数字

这个是我在程序使用的例子: public String myPercent(int y,int z){ String baifenbi="";//接受百分比的值 double baiy=y1.0; double baiz=z1.0; double fen=baiy/baiz; //NumberFormat nf ......

阿丢丢
2014/06/10
0
0
Java的国际化与格式化

java程序都国际化思路是将程序中的标签、提示等信息放在资源文件中,程序需要支持哪些国家、语言环境,就对应提供哪些相应的资源文件。资源文件就是key-value,每个资源文件的key可以保持不变...

西红柿的眼泪
2016/07/12
62
0
java 报表的计算公式

package com.util; import java.text.DecimalFormat; import java.text.NumberFormat; import java.text.SimpleDateFormat; import java.util.regex.Matcher; import java.util.regex.Patter......

一念三千
2016/10/14
25
0
金额的计算BigDecimal类

金额的计算BigDecimal类 double d = 9.84; double d2 = 1.22; //注意需要使用BigDecimal(String val)构造方法 BigDecimal bigDecimal = new BigDecimal(Double.toString(d)); BigDecimal big......

Big_BoBo
2013/10/29
0
0
Poechant 解读 Java API —— 借助货币格式化,初识 Locale 和 NumberFormat

Locale 属于 java.util.Locale 包 NumberFormat 属于 java.text.NumberFormat 包 NumberFormat java.text.NumberFormat.getCurrencyInstance();NumberFormat java.text.NumberFormat.getCur......

晨曦之光
2012/04/24
114
0
计算金额 财务计算 精确运算 BigDecimal用法详解

一、简介 Java在java.math包中提供的API类BigDecimal,用来对超过16位有效 位的数进行精确的运算。双精度浮点型变量double可以处理16位有效数。在实际应用中,需要对更大或者更小的数进行运算...

jerry__sun
2016/07/07
581
1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

tomcat 学习笔记之 Session管理

1、Catalina 通过一个 Session 管理器的组件来管理建立的Session 对象 该组件由 org.apache.catalina.Manager 接口表示 Session 管理器必须与一个 Context 关联 Session 管理器负责,创建、更...

职业搬砖20年
9分钟前
0
0
jquery获取input框的几种方式

//如何用jquery获取<input id="test" name="test" type="text"/>中输入的值?$(" #test ").val()$(" input[ name='test' ] ").val()$(" input[ type='text' ] ").val()$(" input[ ......

gulf
12分钟前
0
0
gradle的环境变量的配置

gradle的环境变量的配置 1.首先下载jdk,并且配置jdk的环境变量. 2.找到自己AS安装gradle的目录 我自己的目录为:F:\Android Studio3.1.3\gradle\gradle-4.4 创建环境变量:GRADLE_PATH: F:\A...

android-key
18分钟前
0
0
saltstack配置apache

1.相关配置 #vim /etc/salt/master //打开如下内容的注释 file_roots: base: - /srv/salt #mkdir /srv/salt #vim /srv/salt/top.sls base: 'slaver.test.com': - apache 注意:若换成 '*',则......

硅谷课堂
19分钟前
0
0
Nested enum types are implicitly static

.Nested enum types are implicitly static So there's no need to declare them static explicitly....

Yixin_Nemo
20分钟前
0
0
xlsxwriter 常用excel格式

官方文档:xlsxwriter 官方文档 微博只对常用的方法做了总结和coding,详细方法请参考官方文档 常规写入数据: 写入字符串write_string() import xlsxwriterworkbook = xlsxwriter.Workb...

白木日勿
20分钟前
0
0
TeX

Ito LaTeX是一类用于编辑和排版的软件,用于生成PDF文档。 LaTeX编辑和排版的核心思想在于,通过\section和\paragraph等语句,规定了每一句话在文章中所从属的层次,从而极大方便了对各个层次...

E-C-Ares
22分钟前
0
0
nodejs调用webservice接口

刚接触花了一天时间去查找资料,网上资料也是够了,很多都试了不行,最后看了还是那么简单 主要是了node-soap node-soap-ntlm soap-ntlm-2,这几个试了都有缺陷, 1 首先安装soap npm instal...

lovelan1314
23分钟前
0
0
SUSE Linux 将被 EQT 收购

SUSE再次易主 Micro Focus 宣布将其一大部分业务出售给瑞典私人股本集团殷拓(EQT),所得的一部分收益将用来减轻债务,其余部分将返给股东。EQT 是一家专注于开发领域的投资公司,在软件行业拥...

linux-tao
31分钟前
1
0
Elastic-Job定时任务

用Elastic-Job可解决分布式重复执行问题 如果业务工程采用集群化的部署,可能会多次重复执行定时任务而导致系统的业务逻辑错误,并产生系统故障。 job.properties simple.id=recommendJobs...

lsjlgo
32分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部