JDK 12附带紧凑数字格式
JDK 12 Early Access Build 24引入了对紧凑数字格式的支持 。 JDK-8188147(紧凑数字格式支持)CSR的“摘要”是简单的句子,“添加了对JDK中紧凑/短数字格式的支持。” 相同的CSR还提供了详细的“解决方案”部分,该背景提供了为每个语言环境以多种紧凑形式提供数字以及为支持此功能而添加到JDK的构造/ API(新类,新枚举,新方法等)的背景。
每个语言环境中数字的紧凑和简短格式的表示均基于Unicode公共语言环境数据存储库(CLDR) 。 新添加的类java.text.CompactNumberFormat
具有类级别的Javadoc注释 ,这些注释提供了大量有关如何以“短”和“长”紧凑数字格式表示数字的详细信息。 该类的Javadoc注释还指定与自定义数字格式相关的紧凑数字模式,格式,解析和舍入(默认为RoundingMode.HALF_EVEN )。
Nishit Jain在要求对 JDK 12中增加紧凑数字格式的要求进行审查时写道:
现有的NumberFormat API为格式化和解析数字提供了基于语言环境的支持,其中包括格式化小数,百分数,货币等,但是缺少将数字格式化为人类可读或紧凑形式的支持。 此RFE添加了该功能,以紧凑格式格式化十进制数(例如,在en_US语言环境中为1000-> 1K,1000000-> 1M),这对于显示空间有限的环境很有用,因此可以显示格式化的字符串在那个有限的空间里。 它是由LDML的紧凑数字格式规范定义的。
http://unicode.org/reports/tr35/tr35-numbers.html#Compact_Number_Formats
通过代码示例来了解紧凑的数字格式可能是最容易的。 下面的类( CompactNumberFormatDemo
)是根据JDK 12 Early Access Build 24编译和执行的。
package dustin.examples.jdk12.format; import static java.lang.System.out; import java.text.NumberFormat;
import java.util.Locale; /** * Demonstrate Compact Number Format support added to * JDK 12 as of Early Access Build 24 (see also * JDK-8177552: Compact Number Formatting support). */
public class CompactNumberFormatDemo
{ private static void demonstrateCompactNumberFormatting(final long numberToFormat) { final NumberFormat numberFormatDefault = NumberFormat.getCompactNumberInstance(); final NumberFormat numberFormatUsLong = NumberFormat.getCompactNumberInstance(Locale.US, NumberFormat.Style.LONG); final NumberFormat numberFormatUkShort = NumberFormat.getCompactNumberInstance(Locale.UK, NumberFormat.Style.SHORT); final NumberFormat numberFormatUkLong = NumberFormat.getCompactNumberInstance(Locale.UK, NumberFormat.Style.LONG); final NumberFormat numberFormatFrShort = NumberFormat.getCompactNumberInstance(Locale.FRANCE, NumberFormat.Style.SHORT); final NumberFormat numberFormatFrLong = NumberFormat.getCompactNumberInstance(Locale.FRANCE, NumberFormat.Style.LONG); final NumberFormat numberFormatGrShort = NumberFormat.getCompactNumberInstance(Locale.GERMANY, NumberFormat.Style.SHORT); final NumberFormat numberFormatGrLong = NumberFormat.getCompactNumberInstance(Locale.GERMANY, NumberFormat.Style.LONG); final NumberFormat numberFormatItShort = NumberFormat.getCompactNumberInstance(Locale.ITALY, NumberFormat.Style.SHORT); final NumberFormat numberFormatItLong = NumberFormat.getCompactNumberInstance(Locale.ITALY, NumberFormat.Style.LONG); out.println("Demonstrating Compact Number Formatting on '" + numberToFormat + "':"); out.println("\tDefault: " + numberFormatDefault.format(numberToFormat)); out.println("\tUS/Long: " + numberFormatUsLong.format(numberToFormat)); out.println("\tUK/Short: " + numberFormatUkShort.format(numberToFormat)); out.println("\tUK/Long: " + numberFormatUkLong.format(numberToFormat)); out.println("\tFR/Short: " + numberFormatFrShort.format(numberToFormat)); out.println("\tFR/Long: " + numberFormatFrLong.format(numberToFormat)); out.println("\tGR/Short: " + numberFormatGrShort.format(numberToFormat)); out.println("\tGR/Long: " + numberFormatGrLong.format(numberToFormat)); out.println("\tIT/Short: " + numberFormatItShort.format(numberToFormat)); out.println("\tIT/Long: " + numberFormatItLong.format(numberToFormat)); } /** * Main demonstration executable. * @param arguments Command-line arguments: none expected. */ public static void main(final String[] arguments) { demonstrateCompactNumberFormatting(15); demonstrateCompactNumberFormatting(150); demonstrateCompactNumberFormatting(1500); demonstrateCompactNumberFormatting(15000); demonstrateCompactNumberFormatting(150000); demonstrateCompactNumberFormatting(1500000); demonstrateCompactNumberFormatting(15000000); }
}
执行后,以上代码将以下内容写入标准输出:
Demonstrating Compact Number Formatting on '15':Default: 15US/Long: 15UK/Short: 15UK/Long: 15FR/Short: 15FR/Long: 15GR/Short: 15GR/Long: 15IT/Short: 15IT/Long: 15
Demonstrating Compact Number Formatting on '150':Default: 150US/Long: 150UK/Short: 150UK/Long: 150FR/Short: 150FR/Long: 150GR/Short: 150GR/Long: 150IT/Short: 150IT/Long: 150
Demonstrating Compact Number Formatting on '1500':Default: 2KUS/Long: 2 thousandUK/Short: 2KUK/Long: 2 thousandFR/Short: 2 kFR/Long: 2 millierGR/Short: 1.500GR/Long: 2 TausendIT/Short: 1.500IT/Long: 2 mille
Demonstrating Compact Number Formatting on '15000':Default: 15KUS/Long: 15 thousandUK/Short: 15KUK/Long: 15 thousandFR/Short: 15 kFR/Long: 15 milleGR/Short: 15.000GR/Long: 15 TausendIT/Short: 15.000IT/Long: 15 mila
Demonstrating Compact Number Formatting on '150000':Default: 150KUS/Long: 150 thousandUK/Short: 150KUK/Long: 150 thousandFR/Short: 150 kFR/Long: 150 milleGR/Short: 150.000GR/Long: 150 TausendIT/Short: 150.000IT/Long: 150 mila
Demonstrating Compact Number Formatting on '1500000':Default: 2MUS/Long: 2 millionUK/Short: 2MUK/Long: 2 millionFR/Short: 2 MFR/Long: 2 millionGR/Short: 2 Mio.GR/Long: 2 MillionIT/Short: 2 MlnIT/Long: 2 milione
Demonstrating Compact Number Formatting on '15000000':Default: 15MUS/Long: 15 millionUK/Short: 15MUK/Long: 15 millionFR/Short: 15 MFR/Long: 15 millionGR/Short: 15 Mio.GR/Long: 15 MillionenIT/Short: 15 MlnIT/Long: 15 milioni
通过Early Access Build 24添加到JDK 12的紧凑数字格式支持允许格式化和解析以语言环境特定的“长”或“短”紧凑形式的数字表示形式。
翻译自: https://www.javacodegeeks.com/2019/01/compact-number-formatting-comes-jdk-12.html
JDK 12附带紧凑数字格式相关推荐
- jdk11 jdk12_JDK 12附带紧凑数字格式
jdk11 jdk12 JDK 12 Early Access Build 24引入了对紧凑数字格式的支持 . JDK-8188147(紧凑数字格式支持)CSR的"摘要"是简单的句 ...
- 精简jdk包_在JDK 12精简数字格式中使用最小分数数字
精简jdk包 帖子" 紧凑数字格式出现在JDK 12中 "演示了对JDK 12中 NumberFormat的支持,以支持紧凑数字格式 . 该帖子中显示的示例仅使用NumberFor ...
- 精简jdk包_具有JDK 12精简数字格式的自定义精简数字模式
精简jdk包 帖子" 紧凑数字格式出现在JDK 12中 "已经成为有关Java subreddit线程的讨论主题 . 在那个线程中表达的与紧凑数字格式表示有关的问题涉及显示的精度数 ...
- jdk安装教程_在JDK 12精简数字格式中使用最小分数数字
jdk安装教程 帖子"紧凑数字格式出现在JDK 12中"演示了对JDK 12中NumberFormat的支持,以支持紧凑数字格式. 该帖子中显示的示例仅使用NumberFormat ...
- 在JDK 12精简数字格式中使用最小分数数字
帖子" 紧凑数字格式出现在JDK 12中 "演示了对JDK 12中 NumberFormat的支持,以支持紧凑数字格式 . 该帖子中显示的示例仅使用NumberFormat的调用重 ...
- 具有JDK 12精简数字格式的自定义精简数字模式
帖子" 紧凑数字格式到JDK 12 "已经成为java subreddit线程上讨论的主题 . 在那个线程中表达的与紧凑数字格式表示有关的问题涉及显示的精度数字和显示的紧凑数字模式 ...
- FreeMarker 数字格式处理
给大家推荐个靠谱的公众号程序员探索之路,大家一起加油 freemarker 数字格式的处理 一.使用内建函数 c 特点: 不管其表现形式是怎样的(例如"123,456.123,456&quo ...
- 【全网最精简】一行代码解决千万位以上的数字格式化为银行金额数字格式(如:¥1,000,000,000.00)
parseFloat(123456789.123456.toFixed(2)).toLocaleString(); //"123,456,789.12"(注意输出的是字符串)par ...
- JDK 11 马上就要来了!JDK 12 还会远吗?
开发四年只会写业务代码,分布式高并发都不会还做程序员? JDK 11 发布时间马上到来,于此同时,JDK 12 发布时间也已确定 -- 2019年3月19日.是的,6个月之后又能迎来新版本了! 甲 ...
最新文章
- vim中如何按一个键就保存文件
- Atitit.工作流 与 规则引擎
- SPICE:过程改进的又一种选择
- PHP 安全编程建议
- OsharpNS轻量级.net core快速开发框架简明入门教程
- IPMI远程管理一点记录
- 天津市全国计算机等级报名时间,天津市2018年全国计算机等级考试报名时间及地点...
- C#程序通过模板自动创建Word文档.doc
- php拍照虚线上传图片,照片怎么添加白色虚线 给照片上的人物周围添加虚线描边效果|照片处理工具...
- 快速移除PDF复制到WORD中的换行符
- Topshelf 打包部署Windows服务
- 修复软件图标不正常显示问题
- 淘宝R2去模糊化+聚石塔+奇门
- KALI搭建个人wifi热点
- ubuntu18.04桌面美化及部分应用的安装
- 异常:java.lang.IllegalArgumentException: Result Maps collection already contains
- Softing pnGate系列网关:将PROFIBUS总线集成到PROFINET网络
- AI 仿人类人工智能(超级智能)的本质
- realme手机用什么蓝牙耳机好?2022公认音质最好的蓝牙耳机
- 做科研的几点体会:如何多发 SCI