Nie*_*els 2 java double decimalformat
我在使用DecimalFormat时遇到了最奇怪的事情.
我在webapplication中使用它.我设置了一些测试,它在本地继续失败.我的一个朋友运行它,他能够成功运行JUnit测试.
奇怪的是,在我们的服务器上,应用程序运行完美,没有任何问题.
可能是Java依赖于valuta和数字设置等系统设置?或者还有其他原因吗?这就是我的代码片段:
public String generateFormatPrice(double price) throws Exception {
DecimalFormat format1 = new DecimalFormat("#,##0.00");
String tmp = format1.format(price).replace(".", "&");
String[] tmps = tmp.split("&");
return tmps[0].replace(',', '.') + "," + tmps[1];
}
Run Code Online (Sandbox Code Playgroud)
非常感谢提前!
此代码确实是特定于语言环境的.如果您的代码依赖于某个区域设置,例如美国的"." 是小数分隔符,","是千位分隔符,然后在设置为(例如,德语区域设置)的服务器上运行此代码,它将失败.
请考虑使用此构造函数,该构造函数允许您显式指定要使用的符号.
编辑:据我所知,你正试图用"."格式化数字.作为千位分隔符和","作为小数分隔符.换句话说,法国和德国使用的格式.以下是实现此目的的一种方法:
public static String generateFormatPrice(double price) {
final NumberFormat format = NumberFormat.getNumberInstance(Locale.GERMANY);
format.setMinimumFractionDigits(2);
format.setMaximumFractionDigits(2);
return format.format(price);
}
Run Code Online (Sandbox Code Playgroud)
此外,你不应该使用双倍来保持货币价值 - 如果你这样做,你会遇到一些令人讨厌的错误.
| 归档时间: |
|
| 查看次数: |
1511 次 |
| 最近记录: |