我用Java8在Windows7下开发了一个web应用程序,生成了war文件,并将它部署到Ubuntu下的Tomcat8上;一切都很好,但是当我格式化和打印数字时,我得到了不同的输出。例如,在Windows中,我打印"74,00“,而在Linux中,我得到"74..00”。这是我的代码:
//调用法
formatCurrency(String.format("%.2f", amount));//方法
private String formatCurrency(String number){
String formattedNumber = "";
try {
String[] support = number.split(",");
String intero = support[0];
if (intero.length() > 3){
formattedNumber = intero.substring(0, intero.length() - 3) + "." + intero.substring(intero.length() - 3);
if (intero.substring(0, intero.length() - 3).length() > 3){
formattedNumber = intero.substring(0, intero.length() - 6) + "." + formattedNumber;
}
}
else
formattedNumber = support[0];
formattedNumber = formattedNumber + "," + support[1];
}
catch (Exception ex) {
System.out.println("errore in stampa " + ex);
}
return formattedNumber;
}发布于 2017-03-13 13:44:52
默认情况下,Java的格式化函数将使用默认区域设置,而且很可能Windows系统上的默认区域设置与Linux系统上的默认区域设置不同。您应该使用变体,它允许您指定所需的区域设置。
formatCurrency(String.format(Locale.US,"%.2f", amount));显然,为您的使用使用适当的环境。
顺便提一句,这不是非常复杂吗?
如果--正如我所怀疑的--唯一的目标是获得数千个分离器,那么我可以建议这种更简单、更不容易出错的方案吗?
private String formatCurrency(double amount) {
NumberFormat nf = NumberFormat.getInstance(Locale.ITALIAN);
nf.setGroupingUsed(true); //force thousands separators, for Locale.ITALIAN it's not even needed
return nf.format(amount);
}https://stackoverflow.com/questions/42765020
复制相似问题