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.0f 或 10.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,輸出為 $。