strings.xml
numaralı belgede bir dizede bir parametrenin olmasını istiyorum ve bu parametre çift değer olmalıdır. Ben %1$f
kullanın. Burada - http://developer.android.com/reference/java/util/Formatter.html birçok örnek var, ama bir kaç tane double/float
parametresine sahip olmak istiyorsam ve .
'dan sonra sadece 2 basamağı olan ikinciyi istiyorum? %2$.2f
veya %2.2$f
gibi kombinasyonları kullanmayı denedim. Onlar da işe yaramadı. %.1f
da çalışmıyor. Peki, strings.xml
içindeki bir float/double
değerini "nasıl özelleştirebilirim" bilen var mı? Teşekkürler. Yerinde olsaydımStrings.xml içinde noktadan sonra 2 basamaklı çift parametre
cevap
Kabaca Şimdi bu cevap olduğunu bu
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);
}
gibi görüntülenme biçimini kontrol etmek biçimlendirici yöntemleri kullanın sonra basit değerler olarak kaynaklarda değerlerini saklamak ve ediyorum Eğer ondalık sayılar istediğinizde
Android birden fazla parametreyi oyuncu değişikliği ile berbat ve
iyi çözüm ben a.bf ortak stil% sürede biçimlendirmek: çok geç gelen ... ama umuyoruz diğer insanlara yardım etmek bulduk (ve sadece bu tür kaynaklar için es) dizeleri% n $ s olarak ve kod ondalık parametreleri konur String.format (benim dönüşüm ...) uygulamak
Örnek:
YANLIŞ YOL:
// xml dosyasında:
<string name="resource1">You has a desviation of %1$s and that is a %2$.2f%% percentage.</string>
// Ve nedeniyle son satır bir özel durum oluşturur, böylece android ikame kaynakları sisteme java dosyası
String sresult = getString(R.string.resource1, svalue, spercentage); // <-- exception!
Bu çözüm teknik olarak doğru ama yanlış içinde.
DOĞRU/ÇÖZÜM:
Bunun bir dize ikinci parametre dönüştürün. kodunda
<string name="resource1">You has a desviation of %1$s and that is a %2$s percentage.</string>
Ve şimdi:
...
// 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);
"Yanlış" örneğinizde "spercentage" türü nedir? Tahmin ediyorum (@Nik Reiman'ın işaret ettiği gibi) bu bir "String" - yani bir float ('% 2 $ .2f' de) olarak geçmeye çalışırken bir istisna alamayacaksınız. Bu "cevap" eksik ve yanıltıcıdır. – BadCash
Ayrıca bir dize kaynağından çalışmak üzere biçimlendirilmiş float'ları alamıyorum ve evet bir float geçiyorum. Dize kaynağında "% 1 $ 0.6f" kullanıyorum ve bir istisna alıyorum: java.util.MissingFormatWidthException:% 01 $ .6f bu yüzden bir şekilde karıştırılıyor. Bu cevap doğru. – Aaron
Sadece burada @ David Airam cevabı ekleyerek; Verdiği "yanlış" çözüm aslında doğrudur, ancak bir miktar düzeltmedir.XML dosyası içermelidir:
<string name="resource1">Hello string: %1$s, and hello float: %2$.2f.</string>
Şimdi Java kodunda:
String svalue = "test";
float sfloat= 3.1415926;
String sresult = getString(R.string.resource1, svalue, sfloat);
@ David Airam bildirilen gerektirir %f
bir biçim belirteci, içine bir String
reçel çalışmasını İstisnayı kayan nokta tipi. float
kullanın ve böyle bir istisna yoktur.
Ayrıca, giriş verilerinizin başlangıçta bir dize olması durumunda (diyelim, EditText
ya da bir şeyden), bir String'i bir float'a dönüştürmek için Float.valueOf()
'u kullanabilirsiniz. Ancak, her zamanvalueOf()
işlemlerini deneyin/yakalayın ve bu özel durum işaretlenmediğinden, NumberFormatException
kasasını ele almalısınız. Benim için
Teşekkürler! Zamanımı kurtardı –
% .1f iş size sonra sadece 1 rakamı ''
- 1. Noktadan sonra 2 Haneli Kayan Nokta
- 2. strings.xml içinde bir @ işareti kullanma
- 3. Çift noktadan 8 bit'e kadar kayan nokta nicelleştirme
- 4. 2 ondalık basamaklı float değerini biçimlendirin
- 5. 2 veya 5 basamaklı normal ifade
- 6. yeniden tanımlanması: Parametre 2
- 7. Seçme menüsündeki bir eylemde 2 parametre 2
- 8. Android - strings.xml değerini değiştirin
- 9. Android sync strings.xml
- 10. 1 veya 2 basamaklı regex, isteğe bağlı alfasayısal olmayan, bilinen 2 alfa
- 11. Çift tırnak içinde virgül virgülle çift tırnak nasıl bölünür
- 12. ADT, Strings.xml dosyasında hata gösteriyor
- 13. Android Sırp latin Karadağ strings.xml
- 14. clojure.java.jdbc içinde gerekli parametre eksik
- 15. C# içinde oluşturulmuş 8 basamaklı uinque no C#
- 16. Basamaklı açılan liste angularjs
- 17. 2 basamaklı yıl ile kültüre özgü bir tarih al C#
- 18. 2 ondalık basamaklı float için giriş formunu doğrulayın
- 19. addChild 2 saniye sonra
- 20. 3 ondalık basamaklı HTML.EditorFor
- 21. Doktrini 2: Karmaşık İlişki içinde Tasarruf Varlık
- 22. csv içinde çift tırnaklı elemanlar pandalarla okunamıyor
- 23. mysqli_select_db() tam 2 parametre, 1 oscommerce
- 24. parametre
- 25. 2 hafta içinde php'ye girin
- 26. asp.net: onclick düğmesine basılan parametre için çift kanallar nasıl kullanılır?
- 27. NUnit TestCase'e bir parametre olarak çift tırnak nasıl girilir?
- 28. NSString stringWithFormat - tek basamaklı sayılar için çift haneye bir etiket ayarlamaya çalışmak
- 29. JavaScript dizeleri belli bir noktadan
- 30. Tarantool: index.indexName içinde limit/ofset: çift çağrı
Teşekkür ahbap göstermek isterseniz, ama ben ... hem çalışır .2f' '% 1 $ denetlenecektir gerekir. – lomza
Buradaki yorum gerçek cevap! Bu soruya başka bir cevap olarak koymalısınız. Neredeyse hiç görmedim. – accordionfolder
Iomza'nın yanıtındaki yorumlar gerçek çözümdür – Kachi