使用逗号将整数转换为字符串数千

Dom*_*nik 167 java string integer

我想将一个整数35634646转换为千","所以它应该是35,634,646.

这样做最快的方法是什么?

Eng*_*uad 270

System.out.println(NumberFormat.getNumberInstance(Locale.US).format(35634646));
Run Code Online (Sandbox Code Playgroud)
Output: 35,634,646
Run Code Online (Sandbox Code Playgroud)

  • 我不得不添加`import java.text.NumberFormat;`. (5认同)
  • 这会强制美式样式分组总是使用`,`,但是也有使用`.`进行分组的区域.总之,对区域设置进行硬编码被认为是一种不好的做法. (5认同)
  • @DreaminginCode做得好`Locale.getCurrent()`是解决方案 (4认同)

Ste*_*eod 146

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

您还要求使用逗号表示数千个,但也许您的意思是"根据您的用户的本地习惯以正常的人类可读形式"?

你这样做:

    int i = 35634646;
    String s = NumberFormat.getIntegerInstance().format(i);
Run Code Online (Sandbox Code Playgroud)

美国人将获得"35,634,646"

德国人将获得"35.634.646"

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


mop*_*led 81

int bigNumber = 1234567;
String formattedNumber = String.format("%,d", bigNumber);
Run Code Online (Sandbox Code Playgroud)

  • 注意:这实现了特定于语言环境的分组.http://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html#dnum (6认同)
  • 我更喜欢这种比使用NumberFormat更简洁的方法 (4认同)

Fra*_*kie 35

int value = 100000; 
String.format("%,d", value); // outputs 100,000
Run Code Online (Sandbox Code Playgroud)

产量

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

  • 看看“String.format”。它以“return new Formatter(l) ...”等开头。因此,垃圾收集器的论点并不像看上去那么强大。 (2认同)
  • 这是我最喜欢的答案,该问题要求使用Integer,因此代码如下:int value = 100000; String.format(“%,d”,value); (2认同)

Bal*_*a R 20

 int value = 35634646;
 DecimalFormat myFormatter = new DecimalFormat("#,###");
 String output = myFormatter.format(value);
 System.out.println(output);
Run Code Online (Sandbox Code Playgroud)

OUTPUT:35634646

  • @Ali:你描述的格式只在印度使用,我至少90%肯定印度不在欧洲. (7认同)

Grz*_*ski 15

其他答案是正确的,但在使用之前请仔细检查您的语言环境"%,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);
Run Code Online (Sandbox Code Playgroud)

结果:

35,634,646
35 634 646
Run Code Online (Sandbox Code Playgroud)


sus*_*i99 6

使用扩展

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)
Run Code Online (Sandbox Code Playgroud)

结果

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
Run Code Online (Sandbox Code Playgroud)