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
の場合は $
を返します。
Rashmi is a professional Software Developer with hands on over varied tech stack. She has been working on Java, Springboot, Microservices, Typescript, MySQL, Graphql and more. She loves to spread knowledge via her writings. She is keen taking up new things and adopt in her career.
LinkedIn