Câu trả lời:
System.out.println(NumberFormat.getNumberInstance(Locale.US).format(35634646));
Output: 35,634,646
,
, tuy nhiên cũng có các khu vực sử dụng .
để nhóm. Nói một cách dễ hiểu, mã hóa cứng một miền địa phương được coi là một thực tiễn xấu.
Locale.getCurrent()
là giải pháp
Bạn yêu cầu nhanh nhất, nhưng có lẽ bạn có nghĩa là "tốt nhất" hoặc "chính xác" hoặc "điển hình"?
Bạn cũng yêu cầu dấu phẩy để chỉ hàng ngàn, nhưng có lẽ bạn có nghĩa là "ở dạng người có thể đọc được bình thường theo phong tục địa phương của người dùng của bạn"?
Bạn làm như vậy:
int i = 35634646;
String s = NumberFormat.getIntegerInstance().format(i);
Người Mỹ sẽ nhận được "35.634.646"
Người Đức sẽ nhận được "35.634.646"
Người Đức Thụy Sĩ sẽ nhận được "35'634'646"
int bigNumber = 1234567;
String formattedNumber = String.format("%,d", bigNumber);
Số nguyên:
int value = 100000;
String.format("%,d", value); // outputs 100,000
Đôi:
double value = 21403.3144d;
String.format("%,.2f", value); // outputs 21,403.31
- Chỉnh sửa theo phản hồi psuzzi .
String.format
. Nó bắt đầu bằng return new Formatter(l) ...
vv. Vì vậy, đối số người thu gom rác dường như không mạnh bằng.
int value = 35634646;
DecimalFormat myFormatter = new DecimalFormat("#,###");
String output = myFormatter.format(value);
System.out.println(output);
Đầu ra: 35,634,646
#,###
, nếu bạn muốn định dạng kiểu châu Âu thì bạn có thể sử dụng #,##,###
.
,
.
Các câu trả lời khác là chính xác, tuy nhiên hãy kiểm tra lại ngôn ngữ của bạn trước khi sử dụng "%,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);
Kết quả:
35,634,646
35 634 646
Sử dụng công %d
cụ xác định định dạng bằng dấu phẩy:%,d
Đây là cách dễ nhất.
Nếu điều tương tự phải được thực hiện trong JSP, hãy sử dụng:
<fmt:formatNumber pattern="#,##0" value="${yourlist.yourintvalue}" var="formattedVariable" />
<c:out value="${formattedVariable}"></c:out>
Tất nhiên cho nhiều giá trị sử dụng:
<c:forEach items="${yourlist}" var="yourlist">
<fmt:formatNumber pattern="#,##0" value="${yourlist.yourintvalue}" var="formattedVariable" />
<c:out value="${formattedVariable}"></c:out>
</c:forEach>
đây là giải pháp cho những bạn không thể truy cập "numberformat" hay "String.format" (sử dụng phiên bản giới hạn của java trong khung). Hy vọng nó hữu ích.
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
sử dụng tiện ích mở rộng
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)
kết quả
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
bạn không thể sử dụng một
System.out.printf("%n%,d",int name);
Dấu phẩy trong printf
nên thêm dấu phẩy vào %d
liên.
Không tích cực về nó, nhưng làm việc cho tôi.
import java.text.NumberFormat;
.