HOWTO · Java

Java 中的貨幣格式

本文介紹 Java 中的貨幣格式。

以下是我們可以在 Java 中將貨幣轉換為所需值的一些方法。

在 Java 中使用邏輯函式轉換貨幣

public class CurrencyConversion {
  public static void main(String[] args) {
    double currency_value = 10.9897;
    float epsilon = 0.004f;
    if (Math.abs(Math.round(currency_value) - currency_value) < epsilon) {
      System.out.printf("%10.0f", currency_value);
    } else {
      System.out.printf("%10.2f", currency_value);
    }
  }
}

在上面的 CurrencyConversion 程式碼中,有一個變數 currency_value,以十進位制格式儲存貨幣值。epsilon 是另一個具有不同值的變數。該值可以是對其差值執行一些邏輯運算的任何浮點數。if 語句邏輯被定義為取捨入數與實際數之差的絕對值。將絕對值與 epsilon 值進行比較。該程式使用函式 Math.abs() 將十進位制值的實際差值轉換為零或大於零。

根據條件語句的輸出,它以 10.0f10.2f 格式列印。給定的兩種格式說明符表示,整數部分為 10,這意味著整個字串包含十個字元。小數部分指定格式直到 2 小數位。

在下面的控制檯日誌中,它列印了最多 2 個小數位的絕對轉換值。

10.99  //10.9897
10	   //10
10	   //10.0008

在第一種情況下,當貨幣值為 10.9897 時,它會四捨五入為 10.99。此外,當貨幣值更改為 10 時,輸出仍然返回 10,因為輸入貨幣沒有任何舍入。當貨幣值更改為 10.0008 時,金額將四捨五入為 10 值。

在 Java 中使用 NumberFormat 類轉換貨幣

import java.text.NumberFormat;

public class CurrencyConversion {
  public static void main(String[] args) {
    double money = 100.1;
    NumberFormat formatter = NumberFormat.getCurrencyInstance();
    String moneyString = formatter.format(money);
    System.out.println(moneyString);
  }
}

上面的程式碼塊使用呼叫靜態方法 getCurrencyInstance 函式的 NumberFormat 類。該方法在預設語言環境中返回格式的貨幣格式。它還需要一個 locale 值來指定一個區域。並且貨幣例項可以是基於定義的區域或區域的 Rupees``Dollar 格式。現在格式化程式例項用於呼叫格式化方法。format 方法接受一個引數 double money 並返回一個 String 值。當舍入不正確時,該函式可能會丟擲 ArithmeticException

上面的程式碼建立了以下輸出。

Rs.100.10

但是當語言環境值不同時,它可能會有所不同。當語言環境值為 Locale.CHINA 時,輸出是 。或者當 Locale 為 Locale.CANADA,輸出為 $