gpt4 book ai didi

java - DecimalFormat 取决于系统设置?

转载 作者:行者123 更新时间:2023-12-02 04:06:10 25 4
gpt4 key购买 nike

我在使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com