【发布时间】:2011-10-27 13:34:34
【问题描述】:
我想将整数 35634646 转换成千位“,”,所以应该是 35,634,646。
最快的方法是什么?
【问题讨论】:
我想将整数 35634646 转换成千位“,”,所以应该是 35,634,646。
最快的方法是什么?
【问题讨论】:
这也是一种可以用任何字符替换默认分隔符的方法:
val myNumber = NumberFormat.getNumberInstance(Locale.US)
.format(123456789)
.replace(",", "،")
【讨论】:
使用扩展
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
【讨论】:
int value = 35634646;
DecimalFormat myFormatter = new DecimalFormat("#,###");
String output = myFormatter.format(value);
System.out.println(output);
输出:35,634,646
【讨论】:
#,###,如果您想要欧式格式,那么您可以使用#,##,###。
, 分隔数千的情况下运行,则不会产生正确的(根据问题)输出。
对于那些无法访问“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
【讨论】:
整数:
int value = 100000;
String.format("%,d", value); // outputs 100,000
双打:
double value = 21403.3144d;
String.format("%,.2f", value); // outputs 21,403.31
String.format is pretty powerful.
- 根据psuzzi 反馈编辑。
【讨论】:
String.format。它以return new Formatter(l) ... 等开头。所以垃圾收集器的论点并不像看起来那么强大。
使用带逗号的%d 格式说明符:%,d
这是迄今为止最简单的方法。
【讨论】:
这个解决方案对我有用:
NumberFormat.getNumberInstance(Locale.US).format(Integer.valueOf("String Your Number"));
【讨论】:
您要求最快,但也许您的意思是“最佳”或“正确”或“典型”?
您还要求用逗号表示千位,但也许您的意思是“根据您的用户的当地习惯以正常人类可读的形式”?
你这样做:
int i = 35634646;
String s = NumberFormat.getIntegerInstance().format(i);
美国人将获得“35,634,646”
德国人将获得“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>
【讨论】:
你不能用一个
System.out.printf("%n%,d",int name);
printf 中的逗号应将逗号添加到%d 中间。
对此并不积极,但对我有用。
【讨论】:
首先你需要包含 JSTL 标签:-
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
在页面的开头
【讨论】:
其他答案是正确的,但是在使用 "%,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
【讨论】:
System.out.println(NumberFormat.getNumberInstance(Locale.US).format(35634646));
Output: 35,634,646
【讨论】:
import java.text.NumberFormat;。
,,但是也有一些地区使用. 来代替分组。总之,硬编码语言环境被认为是一种不好的做法。
Locale.getCurrent()是解决方案
int bigNumber = 1234567;
String formattedNumber = String.format("%,d", bigNumber);
【讨论】: