JDK12中怎么使用CompactNumberFormat

这篇文章主要为大家展示了JDK12中怎么使用CompactNumberFormat,内容简而易懂,希望大家可以学习一下,学习完之后肯定会有收获的,下面让小编带大家一起来看看吧。

创新互联是一家专业提供红山企业网站建设,专注与做网站、成都网站制作H5技术、小程序制作等业务。10年已为红山众多企业、政府机构等服务。创新互联专业网站设计公司优惠进行中。

简介

JDK12引入了新的格式化数字的类叫做CompactNumberFormat。主要方便我们对很长的数字进行简写。比如1000可以简写为1K或者1 thousand。

本文将会讲解CompactNumberFormat的基本构成和使用方法,最后在实际的例子中结束文章的讲解。

更多内容请访问www.flydean.com

CompactNumberFormat详解

CompactNumberFormat做为格式化数字的一部分是NumberFormat的子类。作用就是将数字进行格式化。要想构建一个CompactNumberFormat,最简单的办法就是使用NumberFormat.getCompactNumberInstance方法了。

下面是该方法的定义:

 public static NumberFormat getCompactNumberInstance(Locale locale,
   NumberFormat.Style formatStyle)

方法需要传入两个参数:Locale和Style。

Locale

Locale代表着本地语言特性,比如在US locale中,10000可以表示为“10K”,而在China locale中,10000中就变成了“1万”。

Style

Style有两种类型,short和long。比如说10000的short表示是“10K”,而它的long表示是“10 thousand”。

JDK已经为我们自定义了很多种内置的Compact实现,我们可以直接使用:

@Test
 public void testCompactNumberFormat(){
  NumberFormat fmtShort = NumberFormat.getCompactNumberInstance(
    Locale.US, NumberFormat.Style.SHORT);
  NumberFormat fmtLong = NumberFormat.getCompactNumberInstance(
    Locale.US, NumberFormat.Style.LONG);
  log.info(fmtShort.format(312));
  log.info(fmtShort.format(3123));
  log.info(fmtShort.format(31234));
  log.info(fmtLong.format(312));
  log.info(fmtLong.format(3123));
  log.info(fmtLong.format(31234));
 }

输出结果:

312
 3K
 31K
 312
 3 thousand
 31 thousand

自定义CompactNumberFormat

除了使用NumberFormat工具类之外,我们还可以自定义CompactNumberFormat。

先看下CompactNumberFormat的定义:

public CompactNumberFormat(String decimalPattern,
DecimalFormatSymbols symbols, String[] compactPatterns)
public CompactNumberFormat(String decimalPattern,
DecimalFormatSymbols symbols, String[] compactPatterns,
String pluralRules)

CompactNumberFormat可以接受3个或者4个参数的构造函数。

其中decimalPattern和symbols是用来正常解析数字的,compactPatterns则是用来生成缩写。pluralRules表示的是复数规则。

@Test
 public void useCustom(){
   String[] compactPatterns
    = {"", "", "", "0千", "0万", "00万", "0百万", "0千万", "0亿",
    "00亿", "0百亿", "0千亿", "0兆", "00兆", "000兆"};
   DecimalFormat decimalFormat = (DecimalFormat)
    NumberFormat.getNumberInstance(Locale.CHINA);
   CompactNumberFormat format
    = new CompactNumberFormat( decimalFormat.toPattern(),
    decimalFormat.getDecimalFormatSymbols(),
    compactPatterns);
  log.info(format.format(312340000));
 }

上面是一个我们自定义的缩写规则。

输出结果:

3亿

解析CompactNumber

能生成自然也能够解析,我们看一个解析的例子:

 @Test
 public void testParse() throws ParseException {
  NumberFormat fmtLong = NumberFormat.getCompactNumberInstance(
    Locale.US, NumberFormat.Style.LONG);
  log.info(String.valueOf(fmtLong.parse("3 thousand")));
 }

输出结果:

3000

以上就是关于JDK12中怎么使用CompactNumberFormat的内容,如果你们有学习到知识或者技能,可以把它分享出去让更多的人看到。

本文题目:JDK12中怎么使用CompactNumberFormat
本文链接:https://www.cdcxhl.com/article36/pjedpg.html

成都网站建设公司_创新互联,为您提供网站收录虚拟主机网站设计公司自适应网站定制网站网站改版

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

小程序开发