Answers:
您要求最快,但您的意思是“最佳”,“正确”或“典型”?
您还要求用逗号表示数千个,但您的意思是“根据用户的本地习惯以普通的人类可读格式”吗?
您可以这样做:
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
使用%d
格式说明符和逗号:%,d
到目前为止,这是最简单的方法。
如果必须在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;
。