Tôi muốn có một tham số trong một chuỗi trong strings.xml
và tham số này phải là một giá trị kép. Vì vậy, tôi sử dụng %1$f
. Ở đây - http://developer.android.com/reference/java/util/Formatter.html có rất nhiều ví dụ, nhưng nếu tôi muốn có một vài thông số double/float
và tôi muốn chỉ số thứ hai có 2 chữ số sau .
? Tôi đã cố gắng sử dụng các kết hợp như %2$.2f
hoặc %2.2$f
. Họ cũng không làm việc. %.1f
cũng không hoạt động. Vì vậy, không ai biết làm thế nào tôi có thể "tùy chỉnh" một giá trị float/double
bên trong một strings.xml
? Cảm ơn.Tham số kép với 2 chữ số sau dấu chấm trong strings.xml?
Trả lời
Nếu là tôi, tôi muốn lưu trữ các giá trị trong các nguồn tài nguyên như các giá trị đơn giản, và sau đó sử dụng phương pháp định dạng để kiểm soát như thế nào họ đang hiển thị, gần như thế này
public String formatFigureTwoPlaces(float value) {
DecimalFormat myFormatter = new DecimalFormat("##0.00");
return myFormatter.format(value);
}
public String formatFigureOnePlace(float value) {
DecimalFormat myFormatter = new DecimalFormat("##0.0");
return myFormatter.format(value);
}
tôi bây giờ mà trả lời này là đến quá muộn ... nhưng tôi hy vọng để có thể giúp đỡ người khác:
Android hút với nhiều tham số thay thế khi bạn muốn số thập phân và định dạng này trong phong cách chung% a.bf
giải pháp tốt nhất mà tôi đã tìm thấy (và chỉ dành cho loại resourc này es) được đặt các thông số thập phân như chuỗi% n $ s và trong mã áp dụng chuyển đổi của tôi với String.format (...)
Ví dụ:
CÁCH NÀO KHÔNG ĐÚNG:
// Trong tập tin xml:
<string name="resource1">You has a desviation of %1$s and that is a %2$.2f%% percentage.</string>
// Và trong file java
String sresult = getString(R.string.resource1, svalue, spercentage); // <-- exception!
Giải pháp này là chính xác về mặt kỹ thuật nhưng không chính xác do hệ thống nguồn lực thay android nên dòng cuối cùng sẽ tạo ra một ngoại lệ.
ĐÚNG CÁCH/GIẢI PHÁP:
Đơn giản chỉ cần chuyển đổi các tham số thứ hai vào một String.
<string name="resource1">You has a desviation of %1$s and that is a %2$s percentage.</string>
Và bây giờ trong các mã:
...
// This is the auxiliar line added to solve the problem
String spercentage = String.format("%.2f%%",percentage);
// This is the common code where we use the last variable.
String sresult = getString(R.string.resource1, svalue, spercentage);
Loại 'spercentage' trong ví dụ" không chính xác "của bạn là gì? Tôi đoán (như @Nik Reiman chỉ ra) rằng đó là một "String" - tức là không có thắc mắc bạn đang nhận được một ngoại lệ khi cố gắng vượt qua nó như là một phao (tại '% 2 $ .2f'). "Câu trả lời" này không đầy đủ và gây hiểu lầm. – BadCash
Tôi cũng không thể nhận được định dạng nổi để làm việc từ một nguồn tài nguyên chuỗi, và có tôi đi qua một phao. Tôi sử dụng "% 1 $ 0.6f" trong tài nguyên chuỗi, và tôi nhận được một ngoại lệ: java.util.MissingFormatWidthException:% 01 $ .6f để nó bị xáo trộn bằng cách nào đó. Câu trả lời này là chính xác. – Aaron
Chỉ cần thêm vào @ David Airam của câu trả lời ở đây; giải pháp "không chính xác" mà anh ấy đưa ra thực sự đúng, nhưng với một chút tinh chỉnh.Các tập tin XML nên chứa:
<string name="resource1">Hello string: %1$s, and hello float: %2$.2f.</string>
Bây giờ trong mã Java:
String svalue = "test";
float sfloat= 3.1415926;
String sresult = getString(R.string.resource1, svalue, sfloat);
Trường hợp ngoại lệ mà @ David Airam báo cáo là từ cố gắng giơ một String
thành một specifier định dạng với %f
, đòi hỏi một loại điểm nổi. Sử dụng float
và không có ngoại lệ như vậy.
Ngoài ra, bạn có thể sử dụng Float.valueOf()
để chuyển đổi Chuỗi thành dấu phẩy trong trường hợp dữ liệu đầu vào của bạn ban đầu là một chuỗi (ví dụ: từ EditText
hoặc thứ gì đó). Tuy nhiên, bạn nên luôn luôn thử/bắt valueOf()
hoạt động và xử lý trường hợp NumberFormatException
, vì ngoại lệ này không được chọn.
Cảm ơn! Đã lưu thời gian của tôi –
% công việc .1f đối với tôi nếu bạn muốn chỉ hiển thị 1 chữ số sau ''
- 1. printf% f chỉ với 2 số sau dấu thập phân?
- 2. LISP - chữ số sau dấu thập phân
- 3. 3 dấu chấm trong tham số là gì?/Tham số biến số (...) là gì?
- 4. Cách trả về số phao có 2 chữ số sau dấu thập phân?
- 5. iPhone: Bao nhiêu chữ số phải sau dấu chấm của một phao
- 6. Tại sao một số nguyên theo sau là dấu chấm một chữ số hợp lệ trong JavaScript?
- 7. Dấu ngoặc kép trong đối số VBScript
- 8. C# - Dấu hai chấm sau tên biến số
- 9. Tham số REST WCF không thể chứa dấu chấm?
- 10. muốn hiển thị chính xác 2 chữ số sau dấu phẩy động
- 11. trợ giúp với Regex - cần tối đa 3 số sau dấu chấm (.)
- 12. Java sử dụng hằng số Chuỗi với dấu ngoặc kép
- 13. Xóa chữ số sau hai dấu thập phân không phải số tròn trong javascript?
- 14. Return 2 chữ số cuối một số
- 15. Tham lam '../' (dấu chấm chấm)
- 16. Ngăn xếp STL với 2 tham số
- 17. Đặt số chữ số sau khi điểm trong hai số
- 18. Đối số argparse Python với dấu ngoặc kép
- 19. Chữ số kết hợp Regex, dấu phẩy và dấu chấm phẩy?
- 20. JavaScript có độ chính xác số dấu chấm động kép không?
- 21. Sự khác biệt giữa '..' (dấu chấm kép) và '...' (dấu ba chấm) trong thế hệ dải?
- 22. preg_replace tất cả trừ số, chữ cái, dấu chấm và dấu gạch chéo?
- 23. Độ chính xác của dấu chấm động SQL được giới hạn trong 6 chữ số
- 24. Cách tinh chỉnh std :: stod (chuỗi thành kép) cho dấu tách thập phân và số chữ số
- 25. Dấu chấm phẩy sau hàm
- 26. số vòng đến 2 chữ số thập phân
- 27. Cắt ngắn số chữ số có giá trị kép trong C#
- 28. Tham số SQL và Dấu hỏi
- 29. Đối số và dấu chấm tùy chọn trong lược đồ
- 30. Truyền tham số với dấu cách tới CMake ExternalProject_Add BUILD_COMMAND
Cảm ơn, anh chàng, nhưng tôi phải giám sát ... '% $ 1 .2f' làm việc là tốt. – lomza
Nhận xét ở đây là câu trả lời thực sự! Bạn nên đặt nó như một câu trả lời cho câu hỏi này. Tôi gần như không nhìn thấy nó. – accordionfolder
câu trả lời của Iomza trong các nhận xét là giải pháp thực sự – Kachi