Java Compact Number Formatting怎么用?

文章导读
Previous Quiz Next Java 12 引入了 紧凑格式化,我们可以将十进制数、货币或百分比的长数字格式化为短形式或长形式。例如,将 1000 格式化为 1K。这在空间有限或需要以简短形式显示数字时非常有用,例如用 K 表示千、M 表示百万、B 表示十亿,等等
📋 目录
  1. A 创建 CompactNumberFormat 实例
  2. B 格式化值
  3. C 紧凑数字格式化示例
  4. D Compact Number Formatting 和 Fraction Digits
A A

Java - 紧凑数字格式化



Previous
Quiz
Next

Java 12 引入了 紧凑格式化,我们可以将十进制数、货币或百分比的长数字格式化为短形式或长形式。例如,将 1000 格式化为 1K。这在空间有限或需要以简短形式显示数字时非常有用,例如用 K 表示千、M 表示百万、B 表示十亿,等等。我们还可以使用自定义字符串来显示大数字。

创建 CompactNumberFormat 实例

要为特定 locale 创建 CompactNumberFormat 实例,可以使用 NumberFormat 的相关内置方法。

NumberFormat formatter = NumberFormat.getCompactNumberInstance(Locale.US, NumberFormat.Style.SHORT);

这里我们为 US Locale 和 short format style 创建了一个 formatter,这意味着 1000 将被表示为 1K。同样,我们也可以如以下所示为 Long Format 创建实例。

NumberFormat formatter = NumberFormat.getCompactNumberInstance(Locale.US, NumberFormat.Style.LONG);

在这种情况下,1000 将被表示为 1 thousand,依此类推。

格式化值

创建 formatter 后,我们可以使用 format() 方法获取所需的格式化数字字符串。

//1000 将被格式化为 1K
String formatted = formatter.format(1000)

//1000000 将被格式化为 1M
formatted = formatter.format(1000000)

紧凑数字格式化示例

在以下示例中,我们打印了使用紧凑数字格式化获取的长格式和短格式字符串。

package com.;

import java.text.NumberFormat;
import java.util.Locale;

public class Tester {
   public static void main(String[] args) {
      // 为 Long format 创建 formatter 实例
      NumberFormat formatter = NumberFormat.getCompactNumberInstance(
         Locale.US, NumberFormat.Style.LONG);

      System.out.println("Long Formats");
      // 获取格式化字符串
      System.out.println(formatter.format(1000));
      System.out.println(formatter.format(1000 * 1000));
      System.out.println(formatter.format(1000 * 1000 * 1000));

      // 为 Short format 创建 formatter 实例
      formatter = NumberFormat.getCompactNumberInstance(
         Locale.US, NumberFormat.Style.SHORT);
		 
      // 获取格式化字符串
      System.out.println("Short Formats");
      System.out.println(formatter.format(1000));
      System.out.println(formatter.format(1000 * 1000));
      System.out.println(formatter.format(1000 * 1000 * 1000));
   }
}

让我们编译并运行上述程序,这将产生以下结果 −

Long Formats
1 thousand
1 million
1 billion
Short Formats
1K
1M
1B

Compact Number Formatting 和 Fraction Digits

默认情况下,fraction digit 设置为零,但我们也可以使用以下方法设置最小 fraction digits。

NumberFormat formatter = NumberFormat.getCompactNumberInstance(Locale.US, NumberFormat.Style.SHORT);
formatter.setMinimumFractionDigits(3);

// 它将打印 10.012K
System.out.println(formatter.format(10012));

Example: Compact Number Formatting with Fractions

在以下示例中,我们打印了使用 compact number formatting 获取的长格式和短格式字符串。

package com.;

import java.text.NumberFormat;
import java.util.Locale;

public class Tester {
   public static void main(String[] args) {
      // 为 Short format 创建 formatter 实例
      NumberFormat formatter = NumberFormat.getCompactNumberInstance(
         Locale.US, NumberFormat.Style.SHORT);
      System.out.println("不使用 Fractions");
      // 获取格式化字符串
      System.out.println(formatter.format(10012));
      System.out.println(formatter.format(10000012));

      // 设置最小 2 个 fraction digits 以显示
      formatter.setMinimumFractionDigits(2);
      System.out.println("使用 Fractions");
      // 获取格式化字符串
      System.out.println(formatter.format(10012));
      System.out.println(formatter.format(10000012));  
   }
}

让我们编译并运行上述程序,这将产生以下结果 −

不使用 Fractions
10K
10M
使用 Fractions
10.01K
10.00M