我有一个小的疯狂方法,将BigDecimal值转换为漂亮可读的字符串.
private String formatBigDecimal(BigDecimal bd){
DecimalFormat df = new DecimalFormat();
df.setMinimumFractionDigits(3);
df.setMaximumFractionDigits(3);
df.setMinimumIntegerDigits(1);
df.setMaximumIntegerDigits(3);
df.setGroupingSize(20);
return df.format(bd);
}
Run Code Online (Sandbox Code Playgroud)
然而,它还产生了一个所谓的分组分隔符",",它使我的所有值都出现如下:
xxx,xxx
Run Code Online (Sandbox Code Playgroud)
我确实需要分隔符是点或点而不是逗号.有没有人知道如何完成这个小壮举?
我已阅读本,尤其是这个,现在死,但我无法找到一个方法来完成这件事.我是以错误的方式接近这个吗?这样做有更优雅的方式吗?甚至可能是一个解决不同本地数字表示的解决方案,因为逗号将完全符合欧洲标准.
使用Eclipse(Helios)开发Web应用程序时,tomcat输出将被发送到控制台.好的,但是消息正在翻译成我的操作系统语言.
事实上,我的Eclipse是英文版,但Tomcat输出(日志记录)正在翻译成葡萄牙语.可能是Tomcat配置问题,但我无法找到...
我该如何改变这种行为?我希望我的整个Eclipse都是英文的,包括Tomcat.
因此,当我使用Doubles在Java中添加或减去时,它会给我带来奇怪的结果.这里有一些:
如果我补充0.0 + 5.1,它给了我5.1.那是对的.
如果我添加5.1 + 0.1,它会给我5.199999999999(重复9s 的数量可能会关闭).那是错的.
如果我减去4.8 - 0.4,它会给我4.39999999999995(再次,重复9s可能会关闭).那是错的.
起初我认为这只是添加带小数值的双打的问题,但我错了.以下工作正常:
5.1 + 0.2 = 5.3
5.1 - 0.3 = 4.8
Run Code Online (Sandbox Code Playgroud)
现在,添加的第一个数字是保存为变量的double,尽管第二个变量从a中获取文本JTextField.例如:
//doubleNum = 5.1 RIGHT HERE
//The textfield has only a "0.1" in it.
doubleNum += Double.parseDouble(textField.getText());
//doubleNum = 5.199999999999999
Run Code Online (Sandbox Code Playgroud) 我住在比利时.通常,在数学中,我们用这样的逗号写小数:3,141592
这也是我格式化浮点数时的结果.
System.out.println(String.format("%f", 3.141592));
Run Code Online (Sandbox Code Playgroud)
因此,它.被替换为,如此:3,141592.所以总是当我需要一个点而不是我必须添加这样的东西:String.format("%f", 3.14).replace(',','.');
所以,问题是:有没有办法改变Locale,这使得Java中的每个格式化程序都使用一个点而不是逗号?
谢谢
System.out.println(Locale.getDefault());
Run Code Online (Sandbox Code Playgroud)
版画
nl_BE
Run Code Online (Sandbox Code Playgroud)