将整数转换为字符串,以逗号表示千

我想将一个整数35634646转换为1000个“”,所以它应该是35,634,646。

最快的方法是什么?

174977 次浏览
int bigNumber = 1234567;
String formattedNumber = String.format("%,d", bigNumber);
 int value = 35634646;
DecimalFormat myFormatter = new DecimalFormat("#,###");
String output = myFormatter.format(value);
System.out.println(output);

输出:35,634,646

System.out.println(NumberFormat.getNumberInstance(Locale.US).format(35634646));
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

你要求最快,但也许你的意思是“最好”、“正确”或“典型”?

您还要求使用逗号来表示数千,但也许您的意思是“按照用户的本地习惯使用正常的人类可读格式”?

你可以这样做:

    int i = 35634646;
String s = NumberFormat.getIntegerInstance().format(i);

美国人将得到" 35634,646 "

德国人将得到“35.634.646”

瑞士籍德国人将得到"35'634'646"

首先,你需要包括JSTL标签:-

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>

在页面的开头

这个解决方案对我很有效:

NumberFormat.getNumberInstance(Locale.US).format(Integer.valueOf("String Your Number"));

整数:

int value = 100000;
String.format("%,d", value); // outputs 100,000

双打:

double value = 21403.3144d;
String.format("%,.2f", value); // outputs 21,403.31

字符串。格式是非常强大的

< p > - - - 根据psuzzi反馈编辑

你不能用a吗

System.out.printf("%n%,d",int name);

printf中的逗号应该将逗号添加到%d inter中。

不是很肯定,但对我来说还行。

如果必须在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>

使用带有逗号的%d格式说明符:%,d

这是目前为止最简单的方法。

这里有一个解决方案,你谁不能访问“数字格式”或“字符串。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

这是一种方法,也可以替换默认分隔符与任何字符:

val myNumber = NumberFormat.getNumberInstance(Locale.US)
.format(123456789)
.replace(",", "،")
/**
@inpute 100000
@return 1,000,000
*/
public static String addComma(long amount) {
return NumberFormat.getNumberInstance(Locale.US).format(amount);
}