回答:
System.out.println(NumberFormat.getNumberInstance(Locale.US).format(35634646));
Output: 35,634,646
,
使用.
する地域もあります。つまり、ロケールをハードコーディングすることは悪い習慣だと考えられています。
Locale.getCurrent()
が解決策です
あなたは最速を求めますが、おそらく「最高」または「正しい」または「典型的」を意味しますか?
また、数千を示すためにカンマを要求しますが、おそらく「ユーザーのローカルの習慣に応じた通常の人間が読める形式で」という意味ですか?
あなたはそれを次のように行います:
int i = 35634646;
String s = NumberFormat.getIntegerInstance().format(i);
アメリカ人は「35,634,646」を取得します
ドイツ人は「35.634.646」を取得します
スイスのドイツ人は「35'634'646」を取得します
int bigNumber = 1234567;
String formattedNumber = String.format("%,d", bigNumber);
整数:
int value = 100000;
String.format("%,d", value); // outputs 100,000
ダブルス:
double value = 21403.3144d;
String.format("%,.2f", value); // outputs 21,403.31
-psuzziフィードバックごとに編集。
String.format
。return new Formatter(l) ...
etc で始まります。そのため、ガベージコレクターの主張は、それほど強くありません。
int value = 35634646;
DecimalFormat myFormatter = new DecimalFormat("#,###");
String output = myFormatter.format(value);
System.out.println(output);
出力: 35,634,646
#,###
ヨーロッパスタイルのフォーマットが必要な場合は、を使用できます#,##,###
。
,
。
他の答えは正しいですが、使用する前にロケールを再確認してください"%,d"
:
Locale.setDefault(Locale.US);
int bigNumber = 35634646;
String formattedNumber = String.format("%,d", bigNumber);
System.out.println(formattedNumber);
Locale.setDefault(new Locale("pl", "PL"));
formattedNumber = String.format("%,d", bigNumber);
System.out.println(formattedNumber);
結果:
35,634,646
35 634 646
同じことをJSPで行う必要がある場合は、以下を使用します。
<fmt:formatNumber pattern="#,##0" value="${yourlist.yourintvalue}" var="formattedVariable" />
<c:out value="${formattedVariable}"></c:out>
もちろん、複数の値を使用する場合:
<c:forEach items="${yourlist}" var="yourlist">
<fmt:formatNumber pattern="#,##0" value="${yourlist.yourintvalue}" var="formattedVariable" />
<c:out value="${formattedVariable}"></c:out>
</c:forEach>
「numberformat」にも「String.format」にもアクセスできない(フレームワーク内のJavaの限定バージョンを使用する)ためのソリューションを次に示します。お役に立てれば幸いです。
number= 123456789;
thousandsSeparator=",";
myNumberString=number.toString();
numberLength=myNumberString.length;
howManySeparators=Math.floor((numberLength-1)/3)
formattedString=myNumberString.substring(0,numberLength-(howManySeparators*3))
while (howManySeparators>0) {
formattedString=formattedString+thousandsSeparator+myNumberString.substring(numberLength-(howManySeparators*3),numberLength-((howManySeparators-1)*3));
howManySeparators=howManySeparators-1; }
formattedString
拡張機能を使用
import java.text.NumberFormat
val Int.commaString: String
get() = NumberFormat.getInstance().format(this)
val String.commaString: String
get() = NumberFormat.getNumberInstance().format(this.toDouble())
val Long.commaString: String
get() = NumberFormat.getInstance().format(this)
val Double.commaString: String
get() = NumberFormat.getInstance().format(this)
結果
1234.commaString => 1,234
"1234.456".commaString => 1,234.456
1234567890123456789.commaString => 1,234,567,890,123,456,789
1234.456.commaString => 1,234.456
import java.text.NumberFormat;
。