Bir çiftin ondalık sayılarını biçimlendirmede bazı sorunlar yaşıyorum. Çift değerim varsa, örneğin 4.0, ondalık sayıları 4.00 olacak şekilde nasıl biçimlendirebilirim?
Bir çiftin ondalık sayılarını biçimlendirmede bazı sorunlar yaşıyorum. Çift değerim varsa, örneğin 4.0, ondalık sayıları 4.00 olacak şekilde nasıl biçimlendirebilirim?
Yanıtlar:
Yollardan biri NumberFormat kullanmak olacaktır .
NumberFormat formatter = new DecimalFormat("#0.00");
System.out.println(formatter.format(4.0));
Çıktı:
4.00
Java 8 ile format
yöntemi kullanabilirsiniz ..: -
System.out.format("%.2f", 4.0); // OR
System.out.printf("%.2f", 4.0);
f
floating
puan değeri için kullanılır ..2
ondalık gösterimlerden sonra, sonraki ondalık basamakların sayısı .
Çoğu Java sürümü için şunları kullanabilirsiniz DecimalFormat
: -
DecimalFormat formatter = new DecimalFormat("#0.00");
double d = 4.0;
System.out.println(formatter.format(d));
String.format kullanın :
String.format("%.2f", 4.52135);
Dokümanlara göre:
Her zaman kullanılan yerel ayar, tarafından döndürülendir
Locale.getDefault()
.
String.format kullanarak bunu yapabilirsiniz:
double price = 52000;
String.format("$%,.2f", price);
Bunu @ Vincent'ın cevabından farklı kılan virgüllere dikkat edin
Çıktı:
$52,000.00
Biçimlendirme için iyi bir kaynak , konuyla ilgili resmi java sayfasıdır
Her zaman statik yöntemi kullanabilirsiniz printf from System.out
- daha sonra ilgili biçimlendiriciyi uygularsınız; bu, diğer örneklerin yapmanızı gerektirdiği yığın alanından tasarruf sağlar.
Ör:
System.out.format("%.4f %n", 4.0);
System.out.printf("%.2f %n", 4.0);
Oldukça büyük bir bonus olan yığın alanından tasarruf sağlar, yine de bu örneğin diğer yanıtlardan çok daha yönetilebilir olduğunu düşünüyorum, özellikle de çoğu programcı C'den printf işlevini bildiği için (Java işlevi / yöntemi biraz değiştirse de).
out
bir PrintStream
.
double d = 4.0;
DecimalFormat nf = DecimalFormat.getInstance(Locale.ENGLISH);
System.out.println(nf.format("#.##"));
new DecimalFormat("#0.00").format(4.0d);
Alternatif bir yöntem, sınıfın setMinimumFractionDigits
yöntemini kullanmaktır NumberFormat
.
Burada temel olarak ondalık noktadan sonra kaç sayı görünmesini istediğinizi belirtirsiniz.
Dolayısıyla , belirttiğiniz miktarın 2 olduğunu varsayarak bir girdi 4.0
üretecektir 4.00
.
Ancak, Double
girişiniz belirtilen miktardan daha fazlasını içeriyorsa, belirtilen minimum miktarı alacaktır, ardından yukarı / aşağı yuvarlanmış bir rakam daha ekleyin
Örneğin, 4.15465454
belirtilen minimum 2 miktar ile üretecek4.155
NumberFormat nf = NumberFormat.getInstance();
nf.setMinimumFractionDigits(2);
Double myVal = 4.15465454;
System.out.println(nf.format(myVal));
Bunu yapmanın birçok yolu var. Bunlar aşağıda verilmiştir:
Orijinal numaranızın aşağıda verildiğini varsayalım:
double number = 2354548.235;
NumberFormat kullanarak:
NumberFormat formatter = new DecimalFormat("#0.00");
System.out.println(formatter.format(number));
String.format kullanarak:
System.out.println(String.format("%,.2f", number));
DecimalFormat ve desen kullanma:
NumberFormat nf = DecimalFormat.getInstance(Locale.ENGLISH);
DecimalFormat decimalFormatter = (DecimalFormat) nf;
decimalFormatter.applyPattern("#,###,###.##");
String fString = decimalFormatter.format(number);
System.out.println(fString);
DecimalFormat ve desen kullanma
DecimalFormat decimalFormat = new DecimalFormat("############.##");
BigDecimal formattedOutput = new BigDecimal(decimalFormat.format(number));
System.out.println(formattedOutput);
Her durumda çıktı : 2354548.23 olacaktır.
Not :
Yuvarlama sırasında RoundingMode
biçimlendiricinize ekleyebilirsiniz . Aşağıda verilen bazı yuvarlama modu verilmiştir:
decimalFormat.setRoundingMode(RoundingMode.CEILING);
decimalFormat.setRoundingMode(RoundingMode.FLOOR);
decimalFormat.setRoundingMode(RoundingMode.HALF_DOWN);
decimalFormat.setRoundingMode(RoundingMode.HALF_UP);
decimalFormat.setRoundingMode(RoundingMode.UP);
İşte ithalatlar :
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.util.Locale;
Aşağıdaki yöntemlerden herhangi birini kullanabilirsiniz
Eğer kullanıyorsanız java.text.DecimalFormat
DecimalFormat decimalFormat = NumberFormat.getCurrencyInstance();
decimalFormat.setMinimumFractionDigits(2);
System.out.println(decimalFormat.format(4.0));
VEYA
DecimalFormat decimalFormat = new DecimalFormat("#0.00");
System.out.println(decimalFormat.format(4.0));
Basit bir dize biçimine dönüştürmek istiyorsanız
System.out.println(String.format("%.2f", 4.0));
Yukarıdaki kodun tümü 4.00 yazdıracaktır.
% 100 çalışır.
import java.text.DecimalFormat;
public class Formatting {
public static void main(String[] args) {
double value = 22.2323242434342;
// or value = Math.round(value*100) / 100.0;
System.out.println("this is before formatting: "+value);
DecimalFormat df = new DecimalFormat("####0.00");
System.out.println("Value: " + df.format(value));
}
}
İlk ithalat NumberFormat
. Sonra şunu ekleyin:
NumberFormat currencyFormatter = NumberFormat.getCurrencyInstance();
Bu size iki ondalık basamak verecek ve para birimiyle ilgileniyorsa bir dolar işareti koyacaktır.
import java.text.NumberFormat;
public class Payroll
{
/**
* @param args the command line arguments
*/
public static void main(String[] args)
{
int hoursWorked = 80;
double hourlyPay = 15.52;
double grossPay = hoursWorked * hourlyPay;
NumberFormat currencyFormatter = NumberFormat.getCurrencyInstance();
System.out.println("Your gross pay is " + currencyFormatter.format(grossPay));
}
}
Bunu şu şekilde yapabilirsiniz:
double d = 4.0;
DecimalFormat df = new DecimalFormat("#.##");
System.out.print(df.format(d));
##
Bunun yerine kullandığı için işe yaramıyor00
Bunun eski bir konu olduğunu biliyorum, ancak virgül yerine noktayı gerçekten seviyorsanız, sonucunuzu X, 00 olarak bir String olarak kaydedin ve ardından bir süre için değiştirin, böylece X.00 elde edersiniz.
En basit yol, sadece değiştirmeyi kullanmaktır.
String var = "X,00";
String newVar = var.replace(",",".");
Çıktı, istediğiniz X.00 olacaktır . Ayrıca işleri kolaylaştırmak için hepsini bir arada yapabilir ve çift değişkene kaydedebilirsiniz:
Double var = Double.parseDouble(("X,00").replace(",",".");
Bu cevabın şu anda kullanışlı olmadığını biliyorum ama belki bu forumu kontrol eden biri bunun gibi hızlı bir çözüm arıyor olabilir.
String.format()
Veya kullanmayı deneyinjava.text.Format
.