java数字格式化_Java数字格式

java数字格式化

当我看到其他人编写不必要的Java代码并且由于缺乏对已经提供所需功能的JDK类的了解而编写了不必要的Java代码时,我会想到很多次。 这样的一个例子是时间相关的常量的使用硬编码值的写入,如60 , 24 , 1440 ,和86400时TIMEUNIT提供了更好的,标准化的方法。 在这篇文章中,我看一看一个类的示例,该示例提供了开发人员经常在其上实现的功能: NumberFormat 。

NumberFormat类是java.text包的一部分,该包还包括常用的DateFormat和SimpleDateFormat类。 NumberFormat是一个抽象类(没有公共构造函数),其后代的实例是通过具有诸如getInstance() , getCurrencyInstanceInstance()和getPercentInstance()之类的名称的重载静态方法获得的。

货币

下一个代码清单演示了如何调用NumberFormat.getCurrencyInstance(Locale)来获取NumberFormat的实例,该实例以货币友好格式显示数字。

演示NumberFormat的货币支持

/*** Demonstrate use of a Currency Instance of NumberFormat.*/
public void demonstrateCurrency()
{writeHeaderToStandardOutput("Currency NumberFormat Examples");final NumberFormat currencyFormat = NumberFormat.getCurrencyInstance(Locale.US);out.println("15.5      -> " + currencyFormat.format(15.5));out.println("15.54     -> " + currencyFormat.format(15.54));out.println("15.345    -> " + currencyFormat.format(15.345));  // rounds to two decimal placesprintCurrencyDetails(currencyFormat.getCurrency());
}/*** Print out details of provided instance of Currency.** @param currency Instance of Currency from which details*    will be written to standard output.*/
public void printCurrencyDetails(final Currency currency)
{out.println("Concurrency: " + currency);out.println("\tISO 4217 Currency Code:           " + currency.getCurrencyCode());out.println("\tISO 4217 Numeric Code:            " + currency.getNumericCode());out.println("\tCurrency Display Name:            " + currency.getDisplayName(Locale.US));out.println("\tCurrency Symbol:                  " + currency.getSymbol(Locale.US));out.println("\tCurrency Default Fraction Digits: " + currency.getDefaultFractionDigits());
}

执行上述代码后,结果如下所示:

==================================================================================
= Currency NumberFormat Examples
==================================================================================
15.5      -> $15.50
15.54     -> $15.54
15.345    -> $15.35
Concurrency: USDISO 4217 Currency Code:           USDISO 4217 Numeric Code:            840Currency Display Name:            US DollarCurrency Symbol:                  $Currency Default Fraction Digits: 2

上面的代码和相关的输出表明,用于货币的NumberFormat实例(实际上是DecimalFormat )会根据语言环境自动应用适当的位数和适当的货币符号。

百分比

下一个代码清单和相关的输出演示了NumberFormat使用,以百分比友好格式显示数字。

演示NumberFormat的百分比格式

/*** Demonstrate use of a Percent Instance of NumberFormat.*/
public void demonstratePercentage()
{writeHeaderToStandardOutput("Percentage NumberFormat Examples");final NumberFormat percentageFormat = NumberFormat.getPercentInstance(Locale.US);out.println("Instance of: " + percentageFormat.getClass().getCanonicalName());out.println("1        -> " + percentageFormat.format(1));// will be 0 because truncated to Integer by Integer divisionout.println("75/100   -> " + percentageFormat.format(75/100));out.println(".75      -> " + percentageFormat.format(.75));out.println("75.0/100 -> " + percentageFormat.format(75.0/100));// will be 0 because truncated to Integer by Integer divisionout.println("83/93    -> " + percentageFormat.format((83/93)));out.println("93/83    -> " + percentageFormat.format(93/83));out.println(".5       -> " + percentageFormat.format(.5));out.println(".912     -> " + percentageFormat.format(.912));out.println("---- Setting Minimum Fraction Digits to 1:");percentageFormat.setMinimumFractionDigits(1);out.println("1        -> " + percentageFormat.format(1));out.println(".75      -> " + percentageFormat.format(.75));out.println("75.0/100 -> " + percentageFormat.format(75.0/100));out.println(".912     -> " + percentageFormat.format(.912));
}
==================================================================================
= Percentage NumberFormat Examples
==================================================================================
1        -> 100%
75/100   -> 0%
.75      -> 75%
75.0/100 -> 75%
83/93    -> 0%
93/83    -> 100%
.5       -> 50%
.912     -> 91%
---- Setting Minimum Fraction Digits to 1:
1        -> 100.0%
.75      -> 75.0%
75.0/100 -> 75.0%
.912     -> 91.2%

代码和百分比的输出NumberFormat使用表明,通过默认的实例NumberFormat (实际上是一个DecimalFormat通过返回在这种情况下) NumberFormat.getPercentInstance(区域)的方法没有小数位,乘所提供的数目由100(假定它是(如果提供,则为百分数的十进制等效值 ),并添加一个百分号(%)。

整数

接下来显示的少量代码及其相关输出演示了NumberFormat使用,以整数格式显示数字。

演示NumberFormat的整数格式

/*** Demonstrate use of an Integer Instance of NumberFormat.*/
public void demonstrateInteger()
{writeHeaderToStandardOutput("Integer NumberFormat Examples");final NumberFormat integerFormat = NumberFormat.getIntegerInstance(Locale.US);out.println("7.65   -> " + integerFormat.format(7.65));out.println("7.5    -> " + integerFormat.format(7.5));out.println("7.49   -> " + integerFormat.format(7.49));out.println("-23.23 -> " + integerFormat.format(-23.23));
}
==================================================================================
= Integer NumberFormat Examples
==================================================================================
7.65   -> 8
7.5    -> 8
7.49   -> 7
-23.23 -> -23

如上面的代码和相关输出所示, NumberFormat方法getIntegerInstance(Locale)返回一个实例,该实例将提供的数字表示为整数。

固定位数

下一个代码清单和相关的输出演示了如何使用NumberFormat打印浮点数的定点表示形式。 换句话说,使用NumberFormat可以表示一个数字,该数字在小数点左边(“整数”数字)和小数点右边(“小数”数字)正好具有规定位数。

演示定点数字的NumberFormat

/*** Demonstrate generic NumberFormat instance with rounding mode,* maximum fraction digits, and minimum integer digits specified.*/
public void demonstrateNumberFormat()
{writeHeaderToStandardOutput("NumberFormat Fixed-Point Examples");final NumberFormat numberFormat = NumberFormat.getNumberInstance();numberFormat.setRoundingMode(RoundingMode.HALF_UP);numberFormat.setMaximumFractionDigits(2);numberFormat.setMinimumIntegerDigits(1);out.println(numberFormat.format(234.234567));out.println(numberFormat.format(1));out.println(numberFormat.format(.234567));out.println(numberFormat.format(.349));out.println(numberFormat.format(.3499));out.println(numberFormat.format(0.9999));
}
==================================================================================
= NumberFormat Fixed-Point Examples
==================================================================================
234.23
1
0.23
0.34
0.35
1

上面的代码和相关的输出演示了对最小“整数”位数的精确控制,该位数代表小数点左边(至少一个,因此在适用时显示为零)和最大“分数”小数点右边的数字。 尽管未显示,但也可以指定最大整数位数和最小分数位数。

结论

我曾经用过这篇文章来研究如何使用NumberFormat来以不同的方式(货币,百分比,整数,固定的小数点等)表示数字,并且通常意味着不需要编写或减少代码来对这些数字进行按摩格式。 当我第一次开始写这篇文章时,我设想包括有关NumberFormat的直接后代( DecimalFormat和ChoiceFormat )的示例和讨论,但是已经确定这篇文章已经足够冗长了。 我可能会在以后的博客文章中介绍NumberFormat这些后代。

翻译自: https://www.javacodegeeks.com/2014/08/java-numeric-formatting.html

java数字格式化

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/339882.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

快手小筷子机器人_小筷子app官方版下载-快手控场机器人小筷子app下载v1.0.0安卓版_289手游网...

快手控场机器人小筷子app是一个专门为快手主播打造的专业实用工具,是每个快手主播的最佳直播伴侣!快手控场机器人小筷子app能够实时与观众弹幕互动,还能语音播报各种礼物答谢等等,帮助每个主播更好的聚拢粉丝。快手控场机器人小筷…

计算机专业英语主要句型及翻译技巧,计算机专业英语单词及翻译等技巧-20210420072747.ppt-原创力文档...

New Words & Expressions:computerlike a. 计算机似的electromechanical a. 机电的, 电机的vacuum tubes 真空管Census Bureau 人口普查局thousands of 成千上万的 known as 通常所说的,以……著称1.1 The Invention of the ComputerAbbreviations:ENIAC(Electr…

安川机器人编程加电弧_安川AR2010机器人

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼安川AR2010机器人 微信hao123ali联系15067165514 安川机器人末端工具快换_桥田_品质承诺实现安川机器人的一机多用, 工装夹具高效切换,专注于提升工业自动化生产线柔性,技术领先,荣获…

再访PMML

嗨伙计! 从今年年初开始,就有了重新设计Drools PMML模块的计划。 在这篇文章中,我将描述我们将如何处理它,目前的状态,未来发展的想法等,等等……敬请期待! 背景 PMML是一个标准,旨…

用计算机怎么弹离人愁数字,拇指琴新手入门曲谱——离人愁

喜欢古风的朋友赶快凑过来啦,最近抖音上超火的离人愁拇指琴教学,喜欢离人愁的小姐姐小哥哥赶快学起来啦!以下琴谱适用于Hugh Tracey G调17键。南非琴出厂调音是G调排列,习惯了C调音阶排列的朋友可能对G调排列不是很适应。因为两者…

支持nvme的linux_Linux nvme驱动初探

本篇研究的nvme驱动基于Linux 3.10.73 ,为什么选择这个版本呢,因为这个版本之后Linux 块层马上就换成支持多队列(可以参考Linux块层多队列之引入内核),小编的SUSE 11.3也正好能编译这个相对比较低的版本。(随后再看最新版本内核上nvme驱动的实现)通过nvm…

jvm7 jvm8_JVM PermGen –您在哪里?

jvm7 jvm8这篇文章介绍了JVM内存结构的一些基础知识,并快速窥视了PermGen,以了解自Java SE 8出现以来它已消失的地方。 裸基础 JVM只是系统上运行的另一个进程,魔术始于java命令。 像任何OS进程一样,它需要内存才能运行。 请记住…

2019网络教育计算机统考模拟试题,最新2019年网络远程教育《计算机应用基础》统考模拟题库500题(含答案)...

2019年网络远程教育统考《计算机应用基础》考试题库500题[含答案]一、选择题1.启动ExCEl2003应用程序后自动建立的工作簿文件的文件名为_______。A.工作簿B.工作簿文件C.BookFilE1D.Book12.OutlookExprEss的主要功能是__________。A.创建电子邮件账户B.搜…

C++类与对象(中)第二篇

前言: C语言中使用运算符是对内置类型的数据进行操作,但是在C中有了对象,导致对象无法通过运算符进行运算,故引入了运算符重载即需要重新定义这些运算符,赋予已有运算符新的功能,使它能够用于特定类型执行特…

松下壁挂式新风系统推荐_松下壁挂式新风怎么样 松下壁挂式新风系统优势介绍【详解】...

现在很多的家庭都是会安装 新风系统 的,这样也是可以保证室内的空气质量的。其实市场上的新风系统品牌是比较多的,比如松下等,其质量是比较不错的,那么松下壁挂式新风系统的优势有哪些?我们来看看小编的相关介绍吧。松下壁挂式新…

ETL万岁

提取转换负载是用于从一个数据系统中提取数据并加载到另一个数据系统中的过程。 涉及的数据系统称为源系统和目标系统。 来自源系统的数据形状与目标系统不匹配,因此需要进行一些转换以使其兼容,该过程称为Transformation 。 转换是由map / filter / re…

云计算机内存不足怎么办,网易云音乐提示内存不足,电脑提示内存不足-

在有些时候我们的手机百度云提示内存不足了,这该怎么办呢?那么下面就由学习啦小编来给你们说说手机百度云提示内存不足的解决方法吧,希望可以帮到你们哦!手机百度云提示内存不足的解决方法一:手机用久了,需要安装杀毒软件&#x…

黑盒攻击的分类_「图像分类」图像分类中的对抗攻击是怎么回事?

欢迎大家来到图像分类专栏,深度学习分类模型虽然性能强大,但是也常常会因为受到小的干扰而性能崩溃,对抗攻击就是专门研究如何提高网络模型鲁棒性的方法,本文简要介绍相关内容。作者 | 郭冰洋编辑 | 言有三1 简介对于人类而言&…

getter/setter_Getters / Setters。 邪恶。 期。

getter/setter从2003年开始,艾伦霍鲁布(Allen Holub)讨论了为什么吸气和塞特方法是邪恶的著名文章,关于吸气/塞特方法是否是反模式,应该避免使用,还是我们在面向对象中不可避免地需要它,这是一个…

flowable画图教程_JeeGit企业级快速开发平台-JeeSite4 Flowable入门教程

注: 998元以下课程无咨询服务该课程包含服务内容:299元含发票在线课程观看权购课后,教学资源联系长春叭姐QQ:3211247533 索要教学内容3.1 第一章 业务流程 BPM、工作流引擎、Flowable、Activiti23.1.1 JeeSite4 Flowable 课程简介…

Java / Spring:如何快速生成整个Swagger记录的CRUD REST API

作为开发人员,我们在日常生活中经常面临的最繁琐的任务之一就是编写良好且易于理解的文档。 无论我们的文档只有几行来解释功能的核心功能,还是表明系统的来龙去脉的成熟文章都没关系。 重要的是,我们试图通过文档传达的信息是准确且可理解的…

计算机中的英语六级作文万能模板,大学英语六级作文万能模板7篇

很多人都觉得六级很难,其实主要是作文不会写,今天我们为大家整理了一些六级作文万能模板,大家可以借鉴一下,相信会对大家的提高有所帮助。大学英语六级作文万能模板1∶ 阐述主题型要求从一句话或一个主题出发,按照提纲…

中的实践 中兴_中兴通讯5G智慧治水业务在千岛湖畔下姜村成功实践

近日,中兴通讯智慧治水业务在千岛湖畔下姜村成功实践。这一业务为实现千岛湖下姜村水域的智能化管理、立体化监控提供了可靠保障,也将浙江电信5G网络、中兴通讯5G端到端解决方案在试商用实践中再推进一步。下姜村曾先后获得“全国创先争优先进基层党组织…

consul宕机配置丢失_简单的配置死机

consul宕机配置丢失编写整个框架的目的是为了处理应用程序的配置。 我更喜欢一种简单的方法。 如果通过配置来表示“ 部署之间可能有所不同的所有内容 ”,那么我们应该尝试使配置保持简单。 在Java中,最简单的选项是不起眼的属性文件。 属性文件的缺点是…

html post前md5加密,post提交及MD5加密

C# POST提交/// /// post 网址提交////// 提交网站/// 参数/// 编码方式///public static string PostWebRequest(string postUrl, string paramData, Encoding dataEncode){string ret string.Empty;try{byte[] byteArray dataEncode.GetBytes(paramData); //转化HttpWebReq…