Java 将整数转换为带逗号的字符串(以千为单位)

Java 将整数转换为带逗号的字符串(以千为单位),java,string,integer,Java,String,Integer,我想把一个整数35634646转换成千“,,所以它应该是35634646 最快的方法是什么 int bigNumber = 1234567; String formattedNumber = String.format("%,d", bigNumber); 输出:35634646 System.out.println(NumberFormat.getNumberInstance(Locale.US).format(35634646)); 其他答案是正确的,但是在使用“%,d”之前,请仔细检查

我想把一个整数35634646转换成千“,,所以它应该是35634646

最快的方法是什么

int bigNumber = 1234567;
String formattedNumber = String.format("%,d", bigNumber);
输出:
35634646

System.out.println(NumberFormat.getNumberInstance(Locale.US).format(35634646));

其他答案是正确的,但是在使用
“%,d”
之前,请仔细检查您的区域设置:

结果:

35,634,646
35 634 646

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

您还要求用逗号表示千,但您的意思可能是“根据用户的本地习惯,以正常的人类可读形式”

你是这样做的:

    int i = 35634646;
    String s = NumberFormat.getIntegerInstance().format(i);
美国人将获得“35634646”

德国人将获得“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

- 根据反馈进行编辑。

您不能使用

System.out.printf("%n%,d",int name);
printf
中的逗号应在
%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>

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


这是迄今为止最简单的方法。

对于那些无法访问“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

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

val myNumber = NumberFormat.getNumberInstance(Locale.US)
   .format(123456789)
   .replace(",", "،")

你的模式不需要超过
,#####
,如果你想要欧洲风格的格式,那么你可以使用
,##,##
@Ali:你描述的格式只在印度使用,我至少90%肯定印度不在欧洲。我明白了。。。很好,如果您需要印度格式,那么就是这样做的。这取决于区域设置,如果在默认区域设置没有使用
分隔数千个区域的情况下运行,则不会生成正确的(根据问题)输出。注:这实现了特定于区域设置的分组。与使用NumberFormat相比,我更喜欢这种不太冗长的方法,因为NumberFormat必须添加
import java.text.NumberFormat。这迫使美式分组始终使用
,但也有一些地区使用
进行分组。总之,硬编码区域设置被认为是一种不好的做法。@DreamingCode可以很好地完成
locale。getCurrent()
是solution@RogerRV没有Locale.getCurrent()(至少在android上)是的,对于96%不住在美国的人来说,这不是最好的答案,他们不是为我编译的“不乐观”无意义。优点:无“新建”,不会加载垃圾收集器(与DecimalFormat不同)。请查看
String.format
。它以
返回新的格式化程序(l)…
等开始。因此垃圾收集器的参数似乎没有那么强。这是我最喜欢的答案,这个问题要求使用整数,因此下面是代码:int value=100000;格式(“%,d”,值);我喜欢这个。我在哪里可以得到每个地区的数字模式?我试图阅读代码,但在任何地方都找不到,请考虑在您的答案中为代码添加一些注释(也许可以将其包装在一个方法中,这样会更有用)
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(",", "،")