[英]Decimal separator in NumberFormat
給定語言環境 java.text.NumberFormat:
NumberFormat numberFormat = NumberFormat.getInstance();
如何在該數字格式中獲取用作小數分隔符的字符(如果它是逗號或點)? 如何在不必使用新的 DecimalFormat(format) 的情況下修改此屬性?
謝謝
輔助類DecimalFomatSymbols正是您要尋找的:
DecimalFormat format = (DecimalFormat) 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 參數會自動為您完成所有工作。 如果您願意,您可以輕松禁用千位分組分隔符。
以下 junit 測試方法(通過)顯示了基於英語和德語語言環境的這種行為。
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
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.