NumberFormat中的小数分隔符

给定一个语言环境java.text.NumberFormat:

NumberFormat numberFormat = NumberFormat.getInstance(); 

我怎样才能得到在这个数字格式中用作十进制分隔符的字符(如果它是一个逗号或一个点)? 我怎样才能修改这个属性,而不必使用新的DecimalFormat(格式)?

谢谢

辅助类DecimalFomatSymbols是你正在寻找的:

 DecimalFormat format=DecimalFormat.getInstance(); DecimalFormatSymbols symbols=format.getDecimalFormatSymbols(); char sep=symbols.getDecimalSeparator(); 

根据需要设置你的符号:

 //create a new instance DecimalFormatSymbols custom=new DecimalFormatSymbols(); custom.setDecimalSeparator(','); format.setDecimalFormatSymbols(custom); 

编辑:这个答案只适用于DecimalFormat ,而不是在问题中需要NumberFormat 。 无论如何,因为它可以帮助作者,我会让它在这里。

我同意biziclopJoachim Sauer用小数和分组分隔符来搞乱这个工作,可能会导致很多问题。 在NumberFormat getInstance方法中使用locale参数会自动完成所有工作。 如果你愿意,你可以很容易地禁用千分组分隔符。

下面的junittesting方法(通过)显示了基于英语和德语语言环境的此行为。

 public void testFormatter() { DecimalFormat formatter = (DecimalFormat) DecimalFormat.getInstance(Locale.UK); assertEquals('.', formatter.getDecimalFormatSymbols().getDecimalSeparator()); //true formatter = (DecimalFormat) DecimalFormat.getInstance(Locale.GERMAN); assertEquals(',', formatter.getDecimalFormatSymbols().getDecimalSeparator()); //true //and in case you want another decimal seperator for a specific locale DecimalFormatSymbols decimalFormatSymbols = new DecimalFormatSymbols(); decimalFormatSymbols.setDecimalSeparator('.'); formatter.setDecimalFormatSymbols(decimalFormatSymbols); assertEquals('.', formatter.getDecimalFormatSymbols().getDecimalSeparator()); //true } 

如果您的NumberFormat实例是DecimalFormat ,则可以使用getDecimalFormatSymbols()来获取该信息。

一般来说,你不能得到这些信息。

你为什么需要它?