在Java 12中添加的 CompactNumberFormat 类。可以将数字(例如1000)格式化为" 1K"(短样式)或" 1000"(长样式)。
创建CompactNumberFormat实例
要获取语言环境的 CompactNumberFormat ,请使用 NumberFormat 给出的工厂方法之一。
NumberFormat fmt = NumberFormat.getCompactNumberInstance(new Locale("hi", "IN"), NumberFormat.Style.SHORT);
NumberFormat fmt = NumberFormat.getCompactNumberInstance( Locale.US, NumberFormat.Style.LONG);自定义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);数字格式示例
简单格式化 - 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
设置小数 - 设置数字的小数部分中允许的最小位数。默认情况下,小数部分设置为'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
数字解析示例
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
點擊查看更多內容
為 TA 點贊
評論
評論
共同學習,寫下你的評論
評論加載中...
作者其他優質文章
正在加載中
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦