如何打印Double而不用逗号

使用toString() ,Double添加逗号(5143打印为5,143)。 如何禁用逗号?

您的问题属于Locale,正如Rorick正确指出的那样。 但是,您应该查看DecimalFormat类,以防更改Locale意味着搞乱所有事情。

查看NumberFormat类,处理千位分隔符。 因为看起来你的情况是关于千分隔。

据我所知,你无法禁用toString()方法返回的内容。

我的解决方案如下:

 someDouble.toString().replaceAll(",", ""); 

不是最优雅的解决方案,但它的工作原理。

这将删除所有分组(在您的情况下为逗号)。

 DecimalFormat df = new DecimalFormat(); df.setGroupingUsed(false); 
 myDouble.toString().replaceAll(",", ""); 

Java非常支持使用NumberFormat类格式化不同语言环境中的文本中的数字:

使用当前区域设置:

 NumberFormat.getNumberInstance().format(5000000); 

会给你(使用瑞典语语言环境)字符串:5 000 000

…或者使用特定的语言环境(例如法语,也会产生5 000 000 ):

 NumberFormat.getNumberInstance(Locale.FRANCE).format(5000000); 

可能您必须更改区域设置。 它默认来自系统区域设置,但您可以覆盖它。 在Locale类上阅读javadoc并开始这个小教程 。 可以通过命令行指定区域设置:

 java -Duser.language=en -Duser.region=US MyApplication 

三种方式:

  1. 使用DecimalFormat

     DecimalFormat df = new DecimalFormat(); DecimalFormatSymbols dfs = df.getDecimalFormatSymbols(); dfs.setGroupingSeparator(Character.MAX_VALUE); df.setDecimalFormatSymbols(dfs); System.out.println(df.format(doubleVar)); 
  2. (正如其他人所建议的那样)只需替换你得到的字符串中的逗号即可

  3. 在加载VM时设置区域设置

NumberFormat format = NumberFormat.getInstance();

format.setGroupingUsed(假);

我使用此方法将double格式化为具有固定语言环境,没有分组以及最小和最大小数位数的字符串

 public String formatNumber(double number){ NumberFormat nf = NumberFormat.getInstance(new Locale("en", "EN")); nf.setMaximumFractionDigits(3); nf.setMinimumFractionDigits(1); nf.setGroupingUsed(false); String str = nf.format(number); return str; } 
 Double result= 5143.0; Sysout(result.toString()) 

给了我5143.0...可以把你得到的代码