フォーマット負のマイナス記号とUSDの量ではなく、ブラケット(ジャワ)

StackOverflow https://stackoverflow.com/questions/2056400

質問

どのように私はマイナス記号とマイナスUSD通貨値を印刷するNumberFormat.getCurrencyInstance()を得るのですか?

他のヒント

これは、ロケールに依存しない方法でそれを行うにはNumberFormat.getCurrencyInstance()によって返されてDecimalFormatの少し調整が必要です。ここで私は(Androidの上でテスト)やったことだ。

DecimalFormat formatter = (DecimalFormat)NumberFormat.getCurrencyInstance();
String symbol = formatter.getCurrency().getSymbol();
formatter.setNegativePrefix(symbol+"-"); // or "-"+symbol if that's what you need
formatter.setNegativeSuffix("");

IIRCは、Currency.getSymbol()は、すべてのシステムのすべてのロケールの値を返さないかもしれないが、それは主要なもののために働く必要があります(と私はそれが自分自身で合理的なフォールバックを持っていると思うので、あなたは何もする必要はありません)

FormatNumber JSTLタグ:

このここで私は常にJavaクラスまたはFMTのいずれかを介して使用して終了です

DecimalFormat format = new DecimalFormat("$#,##0.00;$-#,##0.00");
String formatted = format.format(15.5);

これは、常に、少なくとも$ 0.00生成し、表示されたときに一貫性があります。また、必要に応じて数千人のseperatorsが含まれています。それはあなたの要求である場合は、ドル記号の前にマイナス記号を移動することができます。

試します:

NumberFormat.getCurrencyInstance(Locale.CANADA);

NumberFormat.getCurrencyInstance(Locale.UK);

なぜPOIがExcelの通貨のフォーマットの最初のオプションをサポートすることを拒否私を超えています! loading="lazy" "ここに画像の説明を入力し、"

私はあなたの最後のセルの値は、通貨記号の導入により非数値となりますので、通貨のためのDecimalFormatを使用して好きではありません。大手金融機関のために働いている間、私はこのフォーマットの問題を解決する使命を帯びました。 POIは合理的であるとExcelのネイティブのオプションの包括的なサポートを持っていることを拒否しているため、この変更の核となるアイデアは、ですが、私は自分のコードに潜入し、コアでそれらの値を変更します。以下は、私の回避策です。

private static final String CURRENCY_FORMAT_OVERRIDE = "\"$\"#,##0.00_);-\"$\"#,##0.00";
private static final String CURRENCY_FORMAT_TARGET = "\"$\"#,##0.00_);(\"$\"#,##0.00)";    

static { // static class level initializer
    Field field = org.apache.poi.ss.usermodel.BuiltinFormats.class.getDeclaredField("_formats");            
    field.setAccessible(true);
    String[] _formats = (String[])field.get(new org.apache.poi.ss.usermodel.BuiltinFormats());
    for(int i = 0; i < _formats.length; ++i) {
        if(_formats[i].equals(CURRENCY_FORMAT_TARGET)) {
            _formats[i]=CURRENCY_FORMAT_OVERRIDE;
            System.out.println("TAKE THAT, POI!!!");
        }
    }
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top