簡體   English   中英

NumberFormat 中的小數分隔符

[英]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 無論如何,因為它可能對作者有所幫助,所以我會放在這里。

我同意biziclopJoachim 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
}

如果您的NumberFormat實例是DecimalFormat ,那么您可以使用getDecimalFormatSymbols()來獲取該信息。

通常,您無法獲得該信息。

你為什么需要它?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM