2017-06-13 134 views
4

直到最近,我的代碼在我的開發機器以及部署服務器上工作正常。DecimalFormat在Windows更新後無法正常工作

現在出了藍色的DecimalFormat的不能按預期工作,我敢肯定,是窗口10創作者更新後。

我的代碼是:

double x = 22.44; 
DecimalFormat df = new DecimalFormat("0.00"); 
System.out.println(df.format(x)); 

輸出:22,44 相反的22.44

如果我將其更改爲:

double x = 22.44; 
DecimalFormat df = new DecimalFormat("0,00"); 
System.out.println(df.format(x)); 

輸出爲:0.22

我我使用netbeans 7.4和jdk 1.7.0_79u(64位) 嘗試更改m y jdk到1.7.0_80u(32位),但沒有區別。 還更改了十進制符號和數字分組符號的區域設置,但仍然是同樣的問題。

任何人有關於如何解決這個問題的想法?

+0

我查一下我所得到的...只是片刻 – ItamarG3

+0

好吧,也許這是一個Java 7問題。 java 9(早期訪問)沒有問題...我會盡快與java 7進行檢查 – ItamarG3

+1

System.out.println(Locale.getDefault(Locale.Category.FORMAT))的輸出是什麼? – assylias

回答

4

這可能是一個語言環境的問題 - 你目前的代碼使用的系統,該系統可以在不同的Java 7和Java 8來完成的默認語言環境。如果你想使用一個特定的區域,那麼你可以使用:

double x = 22.44; 
DecimalFormat df = new DecimalFormat("0.00", new DecimalFormatSymbols(Locale.FRANCE)); 
System.out.println(df.format(x)); 

df = new DecimalFormat("0.00", new DecimalFormatSymbols(Locale.UK)); 
System.out.println(df.format(x)); 

,輸出:

22,44(用逗號分隔)
22.44(以點)

4

這將是您的系統區域設置,不同的國家使用不同的字符爲小數點和千位分隔符。

您可以設置十進制格式的語言環境以覆蓋您的系統默認值。或者你可以改變你的系統默認值。