2017-04-25 104 views
0

我想使用DecimalFormat以給定的格式字符串格式化數字。這在oracle java docs中有記錄。DecimalFormat忽略給定的模式,但使用語言環境

public class DecimalFormatDemo { 

    static public void customFormat(String pattern, double value) { 
    DecimalFormat myFormatter = new DecimalFormat(pattern); 
    String output = myFormatter.format(value); 
    System.out.println(value + " " + pattern + " " + output); 
    } 

    static public void main(String[] args) { 
    customFormat("###,###.###", 123456.789); 
    } 
} 

但我的輸出是對我的德國德國OS格式式樣:

actual: 123456.789 ###,###.### 123.456,789 
expected: 123456.789 ###,###.### 123,456.789 

我知道我能explicitly set the separators。 但我希望能夠像Oracle文檔中的字符串一樣設置格式。這應該獨立於我的OS語言環境。

回答

2

由於您的默認語言環境是德語,因此您會獲得德文數字格式。如果您希望更改該選項,請爲DecimalFormat的數字格式選擇不同的區域設置。

實施例:

import java.text.DecimalFormat; 
import java.text.NumberFormat; 
import java.util.Locale; 
public class DecimalFormatDemo { 

    static public void customFormat(String pattern, double value) { 

    NumberFormat nf1 = NumberFormat.getNumberInstance(Locale.ENGLISH); 
    DecimalFormat df1 = (DecimalFormat)nf1; 
    df1.applyPattern(pattern); 
    String output = df1.format(value); 
    System.out.println("Input: " + value + ", pattern: " + pattern + " output: " + output); 


    NumberFormat nf2 = NumberFormat.getNumberInstance(Locale.GERMAN); 
    DecimalFormat df2 = (DecimalFormat)nf2; 
    df2.applyPattern(pattern); 
    output = df2.format(value); 
    System.out.println("Input: " + value + ", pattern: " + pattern + " output: " + output); 

    } 

    static public void main(String[] args) { 
    customFormat("###,###.###", 123456.789); 
    } 
} 

輸出:

Input: 123456.789, pattern: ###,###.### output: 123,456.789 
Input: 123456.789, pattern: ###,###.### output: 123.456,789 
相關問題