Java 教程

Java 控制語句

面向物件程式設計

Java 內建類

Java 檔案處理

Java 錯誤和異常

Java 多執行緒

Java 同步

Java 網路

Java 集合

Java 介面

Java 資料結構

Java 集合演算法

高階 Java

Java 雜項

Java API 和框架

Java 類參考

Java 有用資源

Java - 簡潔數字格式化



Java 12 引入了**簡潔格式化**,我們可以將小數、貨幣或百分比的長數字格式化為短格式或長格式。例如,將 1000 格式化為 1K。這在空間有限或需要以短格式顯示數字(例如 K 表示千、M 表示百萬、B 表示十億等)的情況下非常有用。我們也可以使用自定義字串來顯示大數字。

建立 CompactNumberFormat 例項

要為區域設定建立 CompactNumberFormat 的例項,可以使用 NumberFormat 的相關內建方法。

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

這裡我們正在為美國區域設定和短格式樣式建立一個格式化程式,這意味著 1000 將表示為 1K。類似地,我們可以為長格式建立例項,如下所示。

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

在這種情況下,1000 將表示為 1 千,依此類推。

格式化值

建立格式化程式後,我們可以使用 format() 方法獲取所需的格式化數字字串。

//1000 will be formatted as 1K
String formatted = formatter.format(1000)

//1000000 will be formatted as 1M
formatted = formatter.format(1000000)

簡潔數字格式化的示例

在下面的示例中,我們正在列印使用簡潔數字格式化獲取的長格式和短格式字串。

package com.tutorialspoint;

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

public class Tester {
   public static void main(String[] args) {
      // Create the formatter instance for Long format
      NumberFormat formatter = NumberFormat.getCompactNumberInstance(
         Locale.US, NumberFormat.Style.LONG);

      System.out.println("Long Formats");
      // get the formatted strings
      System.out.println(formatter.format(1000));
      System.out.println(formatter.format(1000 * 1000));
      System.out.println(formatter.format(1000 * 1000 * 1000));

      // Create the formatter instance for Short format
      formatter = NumberFormat.getCompactNumberInstance(
         Locale.US, NumberFormat.Style.SHORT);
		 
      // get the formatted strings
      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

簡潔數字格式化和小數位數

預設情況下,小數位數設定為零,但我們也可以使用以下方法設定最小小數位數。

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

// It will print 10.012K
System.out.println(formatter.format(10012));

示例:帶小數的簡潔數字格式化

在下面的示例中,我們正在列印使用簡潔數字格式化獲取的長格式和短格式字串。

package com.tutorialspoint;

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

public class Tester {
   public static void main(String[] args) {
      // Create the formatter instance for Short format
      NumberFormat formatter = NumberFormat.getCompactNumberInstance(
         Locale.US, NumberFormat.Style.SHORT);
      System.out.println("Without using Fractions");
      // get the formatted strings
      System.out.println(formatter.format(10012));
      System.out.println(formatter.format(10000012));

      // set the minimum 2 fraction digits to display
      formatter.setMinimumFractionDigits(2);
      System.out.println("Using Fractions");
      // get the formatted strings
      System.out.println(formatter.format(10012));
      System.out.println(formatter.format(10000012));  
   }
}

讓我們編譯並執行上述程式,這將產生以下結果:

Without using Fractions
10K
10M
Using Fractions
10.01K
10.00M
廣告