2013-05-15 28 views
5

Tôi đang phát triển ứng dụng Android nơi tôi muốn định dạng số kép thành #. ##, mà tôi đã thực hiện bằng cách sử dụng mã bên dưới .(android) decimalformat, sử dụng dấu phẩy thay cho fullstop trong khi định dạng bằng "#. ##"

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

Trong khi kiểm tra khi ngôn ngữ của phần cứng được thiết lập để tiếng Anh (ngôn ngữ mặc định), nó hoạt động tốt, ví dụ nếu chỉ số BMI là 2497,227216676656, nó định dạng sBMI để 2497,23, nhưng nếu ngôn ngữ được chọn để Pháp nó định dạng nó đến 2497,23. Thay cho DOT, COMMA đang được sử dụng đang làm hỏng ứng dụng của tôi !!!

Lý do cho việc này là gì?

Trả lời

8

Hãy thử điều này:

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

Nó hoạt động. Cảm ơn bạn đã phản hồi ngay lập tức. – Toral

+0

@Toral, bạn nên chấp nhận và upvote câu trả lời nếu nó hoạt động. – mike47

0

Bạn nên sử dụng các nhà máy phương pháp tĩnh và không phải là xây dựng để có được định dạng phù hợp.

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

Sử dụng ngôn ngữ Hoa Kỳ sẽ đảm bảo rằng tất cả dữ liệu được định dạng sẽ ở đúng dạng.

Các vấn đề liên quan