2013-05-15 63 views
5

我正在开发Android应用程序,我要将我的双号码格式化为#。##,我已经使用下面的代码。(android)decimalformat,使用逗号代替fullstop,同时使用“#。##”格式化

Double BMI = ((fWeight)/(dHeight*dHeight)); 
DecimalFormat df = new DecimalFormat("0.00"); 
String sBMI = df.format(BMI); 

而当硬件的语言设置为英语(默认语言)的测试,它工作得很好,例如,如果BMI是2497.227216676656,其格式sBMI至2497.23,但如果语言选择为法国它格式化它到2497,23。代替DOT,COMMA正在被使用,这是崩溃我的应用程序!

这是什么原因?

回答

8

试试这个:

Double BMI = ((fWeight)/(dHeight*dHeight)); 
DecimalFormat df = new DecimalFormat("0.00"); 
DecimalFormatSymbols dfs = new DecimalFormatSymbols(); 
dfs.setDecimalSeparator('.'); 
df.setDecimalFormatSymbols(dfs); 
String sBMI = df.format(BMI); 
+0

它的工作。感谢您立即回复。 – Toral

+0

@Toral,如果它有效,你应该接受并提出答案。 – mike47

0

您应该使用工厂静态方法,而不是构造函数,以获得正确的格式。

DecimalFormat df = DecimalFormat.getInstance(Locale.US); 

使用美国语言环境将确保所有格式化的数据将以正确的格式。