2011-02-03 23 views

cevap

231
String.format("%1$,.2f", myDouble); 

String.format otomatik olarak varsayılan yerel kullanır.

+26

Ayrıca, belirli bir yerel ayarı 'String.format (Locale.GERMAN,"% 1 $,. 2f ", myDouble); –

+8

Biçimlendirmek için birden fazla çift varsa,% 1,% 2 vb. Kullanın. Örneğin String.format ("% 1 $,. 2f,% 2 $ ,. 2f", myDouble, aDouble) – Moesio

+1

I "% 1 $" seçeneğinin bu durumda isteğe bağlı olduğuna inanıyorum. Sadece "% ,. 2f" biçimindeki String için şu şekilde çalışır: –

18

kodu;

Double amount = new Double(345987.246); 
NumberFormat numberFormatter; 
String amountOut; 

numberFormatter = NumberFormat.getNumberInstance(currentLocale); 
amountOut = numberFormatter.format(amount); 
System.out.println(amountOut + " " + 
        currentLocale.toString()); 

Bu örnekte çıkışı aynı sayıda biçim Yerel ile nasıl değiştiğini göstermektedir:

345 987,246 fr_FR 
345.987,246 de_DE 
345,987.246 en_US 
+0

String.format() yöntemini kullanmalıyım: '- ( – kike

11
public class MainClass { 
    public static void main(String args[]) { 
    System.out.printf("%d %(d %+d %05d\n", 3, -3, 3, 3); 

    System.out.printf("Default floating-point format: %f\n", 1234567.123); 
    System.out.printf("Floating-point with commas: %,f\n", 1234567.123); 
    System.out.printf("Negative floating-point default: %,f\n", -1234567.123); 
    System.out.printf("Negative floating-point option: %,(f\n", -1234567.123); 

    System.out.printf("Line-up positive and negative values:\n"); 
    System.out.printf("% ,.2f\n% ,.2f\n", 1234567.123, -1234567.123); 
    } 
} 

Ve çıktısını: 1.234.567,123000
:

3 (3) +3 00003
Standart kayan nokta formatı: virgül ile 1234567,123000
Kayan nokta Negatif kayan nokta varsayılanı: -1.234.567,123000
Negatif kayan nokta seçeneği: (1.234.567,123000)

Line-up pozitif ve negat ive değerler:
1.234.567,12
-1.234.567,12

21

manuel ayarlamak sembollerle biçimlendirmek istiyorsanız, bunu kullanın:

DecimalFormatSymbols decimalFormatSymbols = new DecimalFormatSymbols(); 
decimalFormatSymbols.setDecimalSeparator('.'); 
decimalFormatSymbols.setGroupingSeparator(','); 
DecimalFormat decimalFormat = new DecimalFormat("#,##0.00", decimalFormatSymbols); 
System.out.println(decimalFormat.format(1237516.2548)); //1,237,516.25 

Yerel tabanlı biçimlendirme olduğunu Yine de tercih etti.

+1

Yararlı cevap! Ancak, son cümle "Yerel tabanlı biçimlendirme tercih edilir, ancak" mantıklı değil hout içeriği. Dize'nin belirli bir biçimini oluşturmak istediğinizde, yerel tabanlı biçimlendirmeyi kullanmamanız gereken oldukça iyi kullanım durumları vardır. Örneğin. Verilerinizin harici bir dosyaya aktarılmasını gerçekleştiriyorsunuz ve geçerli (veya herhangi bir) yerel ayarlara bağlı olmayan, biçim üzerinde tam denetime sahip olmak istiyorsunuz. –

24
String.format("%4.3f" , x) ; 

Bu, ondalıktan sonra 3 olması gereken ans içinde toplam 4 hane ihtiyacımız olduğu anlamına gelir. Ve f, çift biçimindeki biçim belirtecidir. x, onu bulmak istediğimiz değişkeni ifade eder. Benim için çalıştı. . .

+0

Sanırım ondalık basamaktan sonra 3 sıraya sahip olan argümanlarda dördüncü değişken olacak. –

İlgili konular