計算された金額を印刷するアプリがあり、その値をデフォルトの通貨形式で表示したいと考えています。デバイスの通貨形式で浮動小数点値をフォーマットする方法はありますか?
ヨーロッパではたとえば次のように記述します。
1.000,95€米国で
私はあなたがそこにある他の通貨で1,000.95 $
を書くと思い多かれ少なかれ小数点で表示される値は米国では2ですが、日本では0になります。
どのようにして正確なfoすべての既存通貨の為替レート?
計算された金額を印刷するアプリがあり、その値をデフォルトの通貨形式で表示したいと考えています。デバイスの通貨形式で浮動小数点値をフォーマットする方法はありますか?
ヨーロッパではたとえば次のように記述します。
1.000,95€米国で
私はあなたがそこにある他の通貨で1,000.95 $
を書くと思い多かれ少なかれ小数点で表示される値は米国では2ですが、日本では0になります。
どのようにして正確なfoすべての既存通貨の為替レート?
解決策が見つかりました。クラスNumberFormatには多数の定義済みフォーマッタがあります。通貨の値を書式設定するためのものもあります。
静的メソッドgetCurrencyInstanceを使用すると、クラスはデバイスのデフォルト通貨のフォーマッタを返します。私は自分の結果を設定するには、次のコードを使用します。
NumberFormat format = NumberFormat.getCurrencyInstance();
((TextView) findViewById(R.id.text_result)).setText(format.format(result));
チェックアウトDecimalFormat
。
これは、解析することを可能にするために設計された機能と西洋、アラビア語のサポート、 やインド数字を含む任意のロケールで フォーマット番号、さまざまなを持っています。また、整数( "123")、固定小数点数( "123.4")、科学 表記( "1.23E4")、パーセンテージ( "12%")、、通貨金額 を含む の数字の異なる種類をサポートしています(「$ 123」)。これらのフレーバーはすべて簡単にローカライズできます。
完全を期すために、あなたがたがお好みの通貨との電話の現在のロケール(正しい小数マークと桁区切り)での価格を表示するとします。
NumberFormat format = NumberFormat.getCurrencyInstance(Locale.getDefault());
format.setCurrency(Currency.getInstance("CZK"));
String result = format.format(1234567.89);
result
その後、これらの値を保持します:
CZK1,234,567.89
USロケール1 234 567,89 Kč
でチェコ語ロケールであなたが価格小数部分を省略したい場合( $199.00
の代わりに$199
を表示)は、フォーマッタを使用する前にこれを呼び出してください:
format.setMinimumFractionDigits(0);
すべてのオプションはNumberFormat
docsにリストされています。
@TargetApi(Build.VERSION_CODES.N)
public static Locale getCurrentLocale(Context c) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
return c.getResources().getConfiguration().getLocales().get(0);
} else {
//noinspection deprecation
return c.getResources().getConfiguration().locale;
}
して、フォーマットを行うには:あなたがこれを使用することができ、デバイスのロケールを取得する
このリンクはLocaleに役立ちますhttp://stackoverflow.com/questions/4212320/get-the-current-language-in-device?rq=1 –
正しい通貨記号を取得する際に問題が発生した場合は、https: //stackoverflow.com/questions/9777689/how-to-get-numberformat-instance-from-currency-code –
double num = 1323.526;
NumberFormat defaultFormat = NumberFormat.getCurrencyInstance(getCurrentLocale(getContext()));
defaultFormat.format(num)
結果変数は、どのフォーマットである?? –
result = 1000の場合はどうなり、携帯電話のロケールはFRですが、あなたは米国にいますか?それは1000ドルではなく1 000ユーロを書きますか?通貨形式は、変換または結果の正確性を考慮しませんか? –