作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在使用 DecimalFormat 时遇到了最奇怪的事情。
我在网络应用程序中使用它。我设置了一些测试,但它在本地一直失败。我的一个 friend 运行了它,他能够成功运行 JUnit 测试。
奇怪的是,在我们的服务器上,应用程序运行得很好,没有任何问题。
Java 是否依赖于系统设置(例如 value 和 number 设置)?或者还有其他原因吗?这就是我的代码的样子:
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];
}
提前非常感谢!
最佳答案
这段代码确实是特定于语言环境的。如果您的代码取决于所在区域,例如美国,其中“.”是小数分隔符,“,”是千位分隔符,然后您在设置为德语语言环境的服务器上运行此代码,它将失败。
考虑使用这个constructor ,它允许您明确指定正在使用的符号。
编辑:据我所知,您正在尝试使用“.”来格式化数字。作为千位分隔符,“,”作为小数分隔符。换句话说,法国和德国使用的格式。这是实现这一目标的一种方法:
public static String generateFormatPrice(double price) {
final NumberFormat format = NumberFormat.getNumberInstance(Locale.GERMANY);
format.setMinimumFractionDigits(2);
format.setMaximumFractionDigits(2);
return format.format(price);
}
此外,您不应该使用 double 来保存货币值 - 如果您这样做,您将会遇到一些讨厌的错误。
关于java - DecimalFormat 取决于系统设置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8742645/
我是一名优秀的程序员,十分优秀!