Mar*_*aux 27 java floating-point formatting locale
我住在比利时.通常,在数学中,我们用这样的逗号写小数: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)
一个简单的解决方案,但是可以在整个Locale中广泛使用,将系统区域设置为美国或英国.例.
Locale.setDefault(Locale.US);
Run Code Online (Sandbox Code Playgroud)
由于您已更改了问题,因此您只需使用print方法指定local.
System.out.println(String.format(Locale.US, "%f", 3.141592));
Run Code Online (Sandbox Code Playgroud)
查看http://download.oracle.com/javase/6/docs/api/java/text/DecimalFormat.html可能很有用, 其中包含许多用于在必要时使用Locale精确输出字符串的选项
DecimalFormat是NumberFormat的具体子类,用于格式化十进制数.它具有多种功能,旨在解析和格式化任何语言环境中的数字,包括支持西方,阿拉伯语和印度语数字.它还支持不同类型的数字,包括整数(123),定点数(123.4),科学记数法(1.23E4),百分比(12%)和货币金额(123美元).所有这些都可以本地化.
通过定制例程路由输入和输出通常很有用.这是来自JAMA图书馆的一个(http://math.nist.gov/javanumerics/jama/)
public void print (PrintWriter output, int w, int d) {
DecimalFormat format = new DecimalFormat();
format.setDecimalFormatSymbols(new DecimalFormatSymbols(Locale.US));
format.setMinimumIntegerDigits(1);
format.setMaximumFractionDigits(d);
format.setMinimumFractionDigits(d);
format.setGroupingUsed(false);
print(output,format,w+2);
}
Run Code Online (Sandbox Code Playgroud)
通过使用此功能,您可以确保可能会解决未来的问题和增强功能
归档时间: |
|
查看次数: |
28126 次 |
最近记录: |