2011-11-18 54 views

Trả lời

14

Tôi tin rằng tôi có một cách. Tôi chưa bao giờ DÙNG này, tâm trí bạn, nhưng chắc chắn nó sẽ giúp bạn đóng, nếu không muốn nói đó:

NumberFormat nf = NumberFormat.getInstance(); 
if (nf instanceof DecimalFormat) { 
    DecimalFormatSymbols sym = ((DecimalFormat) nf).getDecimalFormatSymbols(); 
    char decSeparator = sym.getDecimalSeparator(); 
} 

Documents:

NumberFormat, DecimalFormat, DecimalFormatSymbols

Theo các tài liệu DecimalFormat, dường như gọi NumberFormat.getInstance() là an toàn, nhưng có thể trả về một lớp con khác với DecimalFormat (tùy chọn khác mà tôi thấy là ChoiceFormat). Tôi tin rằng đối với phần lớn các trường hợp, nó phải là một DecimalFormat, và sau đó bạn có thể so sánh decSeparator với một số ,. để xem định dạng nào đang sử dụng.

+0

Cảm ơn công trình này tuyệt vời – patrick

+2

Tôi cần phải truyền 'nf' vào' DecimalFormat' '((DecimalFormat) nf) .getDecimalFormatSymbols()', cảm ơn rất nhiều. –

+0

Cảm ơn @ SelçukCihan, tôi đã chỉnh sửa câu trả lời để bao gồm các diễn viên yêu cầu! – kcoppock

-1

Không chắc chắn nếu có một cách dễ dàng, nhưng bạn có thể kiểm tra bộ ngôn ngữ nào đang được sử dụng và sau đó thực hiện các thay đổi thích hợp theo ngôn ngữ đó sử dụng dấu phẩy hoặc số thập phân.

+0

dấu tách ngôn ngữ và dấu thập phân là hai vấn đề khác nhau. thêm vào, bạn không muốn liệt kê tất cả ngôn ngữ hiện có. – Loda

1

tôi đã cố gắng này và nó làm việc tốt ...

String osVersion = System.getProperty("os.version"); 
String PhoneModel = android.os.Build.MODEL; 
String locale = this.getResources().getConfiguration().locale.getDisplayCountry(); 
char decSeparator = '*'; 
DecimalFormatSymbols dfs = new DecimalFormatSymbols(); 
decSeparator = dfs.getDecimalSeparator(); 
String androidVersion = android.os.Build.VERSION.RELEASE; 
String prologue = String.format("OS verson = %s PhoneModel = %s locale = %s DecimalFormatSymbol = [%c] androidVersion = %s ", 
     osVersion ,PhoneModel, locale, decSeparator,androidVersion); 
1

bạn có thể sử dụng:

Currency currency = Currency.getInstance(device_locale); 

vì sử dụng currency.getSymbol() cho biểu tượng. Đối với ngôn ngữ thiết bị mặc định, bạn có thể sử dụng:

@TargetApi(Build.VERSION_CODES.N) 
    public static Locale getCurrentLocale(Context c) { 
     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { 
      return c.getResources().getConfiguration().getLocales().get(0); 
     } else { 
      //noinspection deprecation 
      return c.getResources().getConfiguration().locale; 
     } 
    } 
Các vấn đề liên quan