如何打印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
三种方式:
-
使用
DecimalFormat
DecimalFormat df = new DecimalFormat(); DecimalFormatSymbols dfs = df.getDecimalFormatSymbols(); dfs.setGroupingSeparator(Character.MAX_VALUE); df.setDecimalFormatSymbols(dfs); System.out.println(df.format(doubleVar));
-
(正如其他人所建议的那样)只需替换你得到的字符串中的逗号即可
- 在加载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...
可以把你得到的代码