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 コードには、10 進形式の通貨値を保持する変数 currency_value があります。epsilon は、異なる値を保持する別の変数です。値は、その差に対していくつかの論理演算を実行する任意の浮動小数点数にすることができます。丸められた数値と実際の数値の差の絶対値をとる if ステートメントロジックが定義されています。絶対値はイプシロン値と比較されます。プログラムは、10 進値の実際の差をゼロまたはゼロより大きい値に変換する関数 Math.abs() を使用します。
条件文の出力に基づいて、10.0f または 10.2f のいずれかの形式で出力されます。与えられた 2つのフォーマット指定子は、10 としての整数部分を示しています。これは、文字列全体に 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 クラスを使用しています。このメソッドは、デフォルトのロケールでフォーマットの通貨フォーマットを返します。また、リージョンを指定するためにロケール値を取ります。また、通貨インスタンスは、定義されたエリアまたは地域に基づいて、Rupees Dollar 形式にすることができます。これで、formatter インスタンスを使用して format メソッドを呼び出すことができます。format メソッドはパラメータ double money を取り、String 値を返します。丸めが不適切に行われると、関数は ArithmeticException をスローする可能性があります。
上記のコードは、次の出力を作成します。
Rs.100.10
ただし、ロケール値が異なる場合は異なる可能性があります。ロケール値が Locale.CHINA の場合、出力は¥になります。または、ロケールが Locale.CANADA の場合は $ を返します。