Jawaban:
String.format("%1$,.2f", myDouble);
String.format secara otomatis menggunakan lokal default.
%1, %2dan seterusnya dapat digunakan untuk memesan ulang output berdasarkan indeks argumen input Anda. Lihat ini . Anda dapat menghilangkan indeks dan urutan default akan diasumsikan oleh formatter.
String.format("%4.3f" , x) ;
Ini berarti bahwa kita memerlukan total 4 digit dalam ans, dimana 3 harus setelah desimal. Dan f adalah penentu format ganda. x berarti variabel yang ingin kita temukan. Bekerja untukku. . .
String.format("%014.3f" , 58.656565)-> 0000000058,657: total 14 simbol: 8 nol dan 5 angka dan 1 koma. Jadi dalam hal ini angka 14 berarti jumlah total simbol (yang ekstra diganti dengan awalan nol, bisa hilang tanpa, maka itu akan diganti dengan spasi) dalam string hasil . Bagian .3ini sepenuhnya independen di sini.
String.format("%014.3f" , 58.656565)-> 58,657. Saya mengambilnya karena preferensi pergi ke .3fbagian: pertama-tama mencetak angka dengan 3 tempat desimal dan setelah jika ada simbol kiri itu mencetak spasi terdepan (atau nol / apa pun). Dalam hal ini angkanya 2 + 3 + 1 = 6 simbol dan kami hanya ingin mencetak 4, jadi tidak ada spasi tambahan.
Jika Anda ingin memformatnya dengan menetapkan simbol secara manual, gunakan ini:
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
Format berbasis lokal lebih disukai.
kode diekstraksi dari tautan ini ;
Double amount = new Double(345987.246);
NumberFormat numberFormatter;
String amountOut;
numberFormatter = NumberFormat.getNumberInstance(currentLocale);
amountOut = numberFormatter.format(amount);
System.out.println(amountOut + " " +
currentLocale.toString());
Output dari contoh ini menunjukkan bagaimana format angka yang sama bervariasi dengan Lokal:
345 987,246 fr_FR
345.987,246 de_DE
345,987.246 en_US
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);
}
}
Dan cetak:
3 (3) +3 00003
Format titik-mengambang default: 1234567,123000
Titik-mengambang dengan koma: 1.234.567.123000 Standar
titik-mengambang negatif: -1.234.567.123000
Opsi titik-mengambang negatif: (1.234.567, 123000)Nilai-nilai positif dan negatif line-up:
1.234.567,12
-1.234.567,12
Ada banyak cara Anda bisa melakukan ini. Itu diberikan di bawah ini:
Misalkan nomor asli Anda diberikan di bawah ini: angka ganda = 2354548.235;
Menggunakan NumberFormatdan mode Pembulatan
NumberFormat nf = DecimalFormat.getInstance(Locale.ENGLISH);
DecimalFormat decimalFormatter = (DecimalFormat) nf;
decimalFormatter.applyPattern("#,###,###.##");
decimalFormatter.setRoundingMode(RoundingMode.CEILING);
String fString = decimalFormatter.format(number);
System.out.println(fString);
Menggunakan formatter String
System.out.println(String.format("%1$,.2f", number));
Dalam semua kasus, hasilnya adalah: 2354548.24
Catatan :
Selama pembulatan, Anda dapat menambahkan RoundingModedalam formatter Anda. Berikut adalah beberapa mode Pembulatan yang diberikan di bawah ini:
decimalFormat.setRoundingMode(RoundingMode.CEILING);
decimalFormat.setRoundingMode(RoundingMode.FLOOR);
decimalFormat.setRoundingMode(RoundingMode.HALF_DOWN);
decimalFormat.setRoundingMode(RoundingMode.HALF_UP);
decimalFormat.setRoundingMode(RoundingMode.UP);
Berikut ini adalah impornya :
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.util.Locale;
Menggunakan DecimalFormat
NumberFormat nf = DecimalFormat.getInstance(Locale.ENGLISH);
DecimalFormat decimalFormatter = (DecimalFormat) nf;
decimalFormatter.applyPattern("#,###,###.##");
String fString = decimalFormatter.format(myDouble);
System.out.println(fString);
String.format(Locale.GERMAN, "%1$,.2f", myDouble);