Javaで千単位の区切り文字を設定するには? BigDecimalの文字列表現があります。数千のセパレータを設定して文字列を返します。
これは動作するはずです(JavaDocに基づいてテストされていません):
DecimalFormat formatter = (DecimalFormat) NumberFormat.getInstance(Locale.US);
DecimalFormatSymbols symbols = formatter.getDecimalFormatSymbols();
symbols.setGroupingSeparator(' ');
formatter.setDecimalFormatSymbols(symbols);
System.out.println(formatter.format(bd.longValue()));
JavaDocによると、最初の行のキャストはほとんどのロケールで保存されるはずです。
「、」でフォーマット関数を使用できます。
int no = 124750;
String str = String.format("%,d", no);
//str = 124,750
「、」には、ロケール固有のグループ化文字が含まれます。
BigDecimal bd = new BigDecimal(300000);
NumberFormat formatter = NumberFormat.getInstance(new Locale("en_US"));
System.out.println(formatter.format(bd.longValue()));
編集
スペースなどのカスタムグルーピングセパレータを取得するには、次の操作を行います。
DecimalFormatSymbols symbols = DecimalFormatSymbols.getInstance();
symbols.setGroupingSeparator(' ');
DecimalFormat formatter = new DecimalFormat("###,###.##", symbols);
System.out.println(formatter.format(bd.longValue()));
ブラジルで使用されているフォーマットにこのコードを試してください:
DecimalFormat df = new DecimalFormat(
"#,##0.00",
new DecimalFormatSymbols(new Locale("pt", "BR")));
BigDecimal value = new BigDecimal(123456.00);
System.out.println(df.format(value.floatValue()));
// results: "123.456,00"
DecimalFormatSymbols formatSymbols = new DecimalFormatSymbols();
formatSymbols.setDecimalSeparator('|');
formatSymbols.setGroupingSeparator(' ');
String strange = "#,##0.###";
DecimalFormat df = new DecimalFormat(strange, formatSymbols);
df.setGroupingSize(4);
String out = df.format(new BigDecimal(300000).doubleValue());
System.out.println(out);
NumberFormat nf = DecimalFormat.getInstance(myLocale);
DecimalFormatSymbols customSymbol = new DecimalFormatSymbols();
customSymbol.setDecimalSeparator(',');
customSymbol.setGroupingSeparator(' ');
((DecimalFormat)nf).setDecimalFormatSymbols(customSymbol);
nf.setGroupingUsed(true);
受け入れられた答えは実際に変更する必要があります。 getDecimalFormatSymbolsは、防御的なコピーを作成します。副<文>この[前述の事実の]結果として、それ故に、従って、だから◆【同】consequently; therefore <文>このような方法で、このようにして、こんなふうに、上に述べたように◆【同】in this manner <文>そのような程度まで<文> AひいてはB◆【用法】A and thus B <文>例えば◆【同】for example; as an example、
DecimalFormat formatter = (DecimalFormat) NumberFormat.getInstance(Locale.US);
DecimalFormatSymbols symbols = formatter.getDecimalFormatSymbols();
symbols.setGroupingSeparator(' ');
formatter.setDecimalFormatSymbols(symbols);
System.out.println(formatter.format(bd.longValue()));
新しい行は次のとおりです。formatter.setDecimalFormatSymbols(symbols);
ために 小数:
DecimalFormatSymbols symbols = new DecimalFormatSymbols();
symbols.setGroupingSeparator(' ');
DecimalFormat dfDecimal = new DecimalFormat("###########0.00###");
dfDecimal.setDecimalFormatSymbols(symbols);
dfDecimal.setGroupingSize(3);
dfDecimal.setGroupingUsed(true);
System.out.println(dfDecimal.format(number));
整数データ型に桁区切り記号を使用している場合は、1を使用します。
String.format( "%、d\n"、58625)および出力は58,625
前述のように、次の link は、Javaが番号をローカライズできるようにする特定の国コードを提供します。すべての国には独自のスタイルがあります。
上記のリンクには、ここに配置する国コードがあります。
...(new Locale(<COUNTRY CODE HERE>));
たとえば、スイスは次のように数値をフォーマットします。
1000.00-> 1'000.00
これを達成するために、次のcodesが私のために機能します:
NumberFormat nf = NumberFormat.getNumberInstance(new Locale("de","CH"));
nf.setMaximumFractionDigits(2);
DecimalFormat df = (DecimalFormat)nf;
System.out.println(df.format(1000.00));
結果は期待通りです:
1'000.00