2012-12-09 17 views
21

Çift "amt" değerini, ondalık basamaktan sonra iki basamak olacak şekilde dolar cinsinden println ("$" + dolar + "." + Sent) olarak biçimlendirmem gerekiyor.Java - çift tutarı dolar tutarı olarak biçimlendirin

Bunu yapmanın en iyi yolu nedir?

if (payOrCharge <= 1) 
{ 
    System.out.println("Please enter the payment amount:"); 
    double amt = keyboard.nextDouble(); 
    cOne.makePayment(amt); 
    System.out.println("-------------------------------"); 
    System.out.println("The original balance is " + cardBalance + "."); 
    System.out.println("You made a payment in the amount of " + amt + "."); 
    System.out.println("The new balance is " + (cardBalance - amt) + "."); 
} 
else if (payOrCharge >= 2) 
{ 
    System.out.println("Please enter the charged amount:"); 
    double amt = keyboard.nextDouble(); 
    cOne.addCharge(amt); 
    System.out.println("-------------------------------"); 
    System.out.println("The original balance is $" + cardBalance + "."); 
    System.out.println("You added a charge in the amount of " + amt + "."); 
    System.out.println("The new balance is " + (cardBalance + amt) + "."); 
} 
+0

bak. –

+0

Çoğalt? - http://stackoverflow.com/questions/153724/how-to-round-a-number-to-n-decimal-places-in-java – mawaldne

cevap

7

Hep 2DP içeren bir çıktısını verecek bir DecimalFormat

DecimalFormat df = new DecimalFormat("0.00"); 
System.out.println(df.format(amt)); 

kullanabilirsiniz.

Ama gerçekten, çünkü kayan nokta, para için BigDecimal kullanarak olmalıdır

40

kullanın NumberFormat.getCurrencyInstance() yayımlar:

double amt = 123.456;  

NumberFormat formatter = NumberFormat.getCurrencyInstance(); 
System.out.println(formatter.format(amt)); 

Çıktı:

$123.46 
+0

Bu doğru cevap, ile birlikte olsa da, içeri aktarmanız gerekiyor "import java.text.NumberFormat;" Üstte . –

5

kullanın DecimalFormat ondalık bir değer yazdırmak için İstenen formatta örneğin

DecimalFormat dFormat = new DecimalFormat("#.00"); 
System.out.println("$" + dFormat.format(amt)); 

denemek daha ABD sayı biçiminde $ miktarını görüntülemek isterseniz:

DecimalFormat dFormat = new DecimalFormat("####,###,###.00"); 
System.out.println("$" + dFormat.format(amt)); 

.00 kullanarak, her zaman iki ondalık noktaları bakılmaksızın varlığının yazdırır. Onları yalnızca mevcut olduğunda ondalık yazdırmak istiyorsanız, biçim dizgisinde .## kullanın.

+1

_... kullanın. ## biçeminde string._ - bu size 5.50 $ yerine 0,50 gösterecektir – Gaket

3

Sen gerektiği gibi Bu her zaman yuvarlama, iki ondalık basamak yazdırır bir astar

System.out.printf("The original balance is $%.2f.%n", cardBalance); 

için printf kullanabilirsiniz.

0

Para birimi türleri için çift yerine BigDecimal'i kullanın. Java puzzlers Kitapta gördüğümüz:

System.out.println(2.00 - 1.10); 

ve bunu 0.9 olmayacaktır görebilirsiniz.

String.format() biçimlendirme numaraları için desenlere sahiptir.

-1
NumberFormat in=NumberFormat.getCurrencyInstance(); 
    double payment = 12324.134; 
    System.out.println("US: " + in.format(payment)); 

çıkışı: yönlü çift para miktarlarını tutmak için iyi bir türü değil tarafından ** String.format() **, BigDecimal yerine kullanmak en $ 12,324.13

+1

Sadece kopyalamak bazı cevabı yapıştırın, çıkış günlüğünüzden farklıdır, BigDecimal gerektiğinde bir çift kullanırsınız bu durum –