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
。 无论如何,因为它可以帮助作者,我会让它在这里。
我同意biziclop和Joachim 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()
来获取该信息。
一般来说,你不能得到这些信息。
你为什么需要它?