了解如何将语言环境敏感的精简/较短格式应用于通用编号,例如小数,货币和百分比。 它是在 Java 12 中的CompactNumberFormat
类中添加的。
例如,可以将数字(例如 1000)格式化为“ 1K”(短样式)或“ 1000”(长样式)。
1. CompactNumberFormat
类
CompactNumberFormat
是NumberFormat
的具体子类,它以精简形式格式化十进制数。 精简数字格式设计用于空间受限的环境,并且格式化的字符串可以在该有限的空间中显示。
精简数字格式是指基于为给定语言环境提供的模式,以较短的形式表示数字。
1.1 创建新的CompactNumberFormat
实例
要获取语言环境的CompactNumberFormat
,请使用NumberFormat
给出的工厂方法之一。
NumberFormat fmt = NumberFormat.getCompactNumberInstance(
new Locale("hi", "IN"), NumberFormat.Style.SHORT);
NumberFormat fmt = NumberFormat.getCompactNumberInstance(
Locale.US, NumberFormat.Style.LONG);
1.2 自定义CompactNumberFormat
实例
我们还可以创建自定义的数字格式,在其中可以定义如何使用CompactNumberFormat(String, DecimalFormatSymbols, String[])
构造器以较短的形式表示数字。
final String[] compactPatterns
= {"", "", "", "0k", "00k", "000k", "0m", "00m", "000m",
"0b", "00b", "000b", "0t", "00t", "000t"};
final DecimalFormat decimalFormat = (DecimalFormat)
NumberFormat.getNumberInstance(Locale.GERMANY);
final CompactNumberFormat customCompactNumberFormat
= new CompactNumberFormat( decimalFormat.toPattern(),
decimalFormat.getDecimalFormatSymbols(),
compactPatterns);
- 精简数字
compactPatterns
以一系列模式表示,其中每个模式用于格式化一系列数字。 - 数组中最多可以提供 15 个样式,但是第一个提供的样式始终对应于
10 ^ 0
。 - 基于数组元素的数量,这些值的范围为
10 ^ 0
至10 ^ 14
。
2. 精简数字格式示例
2.1 简单格式化
Java 程序以精简数字格式格式化数字。
import java.text.NumberFormat;
import java.util.Locale;
public class Main
{
public static void main(String[] args)
{
NumberFormat fmt = NumberFormat
.getCompactNumberInstance(Locale.US, NumberFormat.Style.LONG);
System.out.println( fmt.format(100) );
System.out.println( fmt.format(1000) );
System.out.println( fmt.format(10000) );
System.out.println( fmt.format(100000) );
NumberFormat fmtShort = NumberFormat
.getCompactNumberInstance(Locale.US, NumberFormat.Style.SHORT);
System.out.println( fmtShort.format(100) );
System.out.println( fmtShort.format(1000) );
System.out.println( fmtShort.format(10000) );
System.out.println( fmtShort.format(100000) );
}
}
程序输出。
100
1 thousand
10 thousand
100 thousand
100
1K
10K
100K
2.2 设置小数
设置数字的小数部分中允许的最小位数。 默认情况下,小数部分设置为0
个数字。
import java.text.NumberFormat;
import java.util.Locale;
public class Main
{
public static void main(String[] args)
{
NumberFormat fmt = NumberFormat.getCompactNumberInstance(Locale.US, NumberFormat.Style.SHORT);
fmt.setMinimumFractionDigits(3);
System.out.println( fmt.format(10000) );
System.out.println( fmt.format(10012) );
System.out.println( fmt.format(100201) );
System.out.println( fmt.format(1111111) );
}
}
程序输出:
10.000K
10.012K
100.201K
1.111M
3. 精简数字解析示例
Java 程序将精简数字解析为长模式。
import java.text.NumberFormat;
import java.util.Locale;
public class Main
{
public static void main(String[] args) throws Exception
{
NumberFormat fmt = NumberFormat
.getCompactNumberInstance(Locale.US, NumberFormat.Style.LONG);
System.out.println( fmt.parse("100") );
System.out.println( fmt.parse("1 thousand") );
System.out.println( fmt.parse("10 thousand") );
System.out.println( fmt.parse("100 thousand") );
}
}
程序输出:
100
1000
10000
100000
向我提供有关 Java 12 中精简数字格式的问题。
学习愉快!