Java中是否有一个类,可让您将“ 102203345.32”之类的数字格式设置为此“ 102.203.345,32”并返回字符串类型?
我想获得一个字符串,其中数千个字符之间用'。'分隔。小数点之间用逗号“,”分隔。
有人可以帮我吗?我找到了DecimalFormat类,并尝试对其进行自定义:
public class CustomDecimalFormat {
static public String customFormat(String pattern, double value ) {
DecimalFormat myFormatter = new DecimalFormat(pattern);
String output = myFormatter.format(value);
return output;
}
}
但是当我这样调用customFormat方法时:CustomDecimalFormat.customFormat(“ ###。###,00”)我得到一个异常...
我该怎么办?
谢谢!
确保阅读并理解Javadoc的“特殊模式字符”部分,尤其是以下注意事项:
此处列出的字符用于非本地化模式。本地化模式使用从该格式化程序的
DecimalFormatSymbols
对象中获取的相应字符代替,这些字符会失去其特殊状态。
如果这样做了,应该清楚您必须使用适当的构造函数并提供适当配置的分隔符/分组字符,而在模式本身中,点和逗号具有特殊含义。
实际上,上述所有复杂性都为您提供方便:它允许您自定义数字格式并将其本地化。
这是一个对我有用的代码示例:
final DecimalFormatSymbols syms = new DecimalFormatSymbols();
syms.setDecimalSeparator(',');
syms.setGroupingSeparator('.');
DecimalFormat myFormatter = new DecimalFormat("###,###.00", syms);
System.out.println(myFormatter.format(1234.12));
您还可以在应用本地化模式的地方使用变体,以获得更直观的代码:
final DecimalFormatSymbols syms = new DecimalFormatSymbols();
syms.setDecimalSeparator(',');
syms.setGroupingSeparator('.');
DecimalFormat myFormatter = new DecimalFormat("", syms);
myFormatter.applyLocalizedPattern("###.###,00");
System.out.println(myFormatter.format(1234.12));
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句