Bisakah saya melakukannya System.out.print
?
java
formatting
printf
decimal-point
via_point
sumber
sumber
String.format(java.util.Locale.US,"%.2f", val);
Locale.FRANCE
?Locale.US
terlalu jauh. Jika Anda perlu membuat hard-code lokal "netral" untuk melipat case, rendering angka, dll., TentukanLocale.ROOT
. Ini akan sesuai untuk teks yang akan dikonsumsi oleh program lain, daripada yang diberikan untuk pengguna manusia. Untuk teks yang disajikan kepada pengguna, hargai lokal mereka, apakah mereka menentukannya secara eksplisit atau default.Anda bisa menggunakannya
DecimalFormat
. Salah satu cara untuk menggunakannya:Satu lagi adalah untuk membangunnya menggunakan
#.##
format.Saya menemukan semua opsi pemformatan kurang dapat dibaca daripada memanggil metode pemformatan, tapi itu masalah preferensi.
sumber
System.out.printf("%.2f", value)
sintaks? Apakah masih ada?DecimalFormat
jawaban saya langsung mengira saya salah, tetapi terima kasih telah menjelaskannya.df.setMinimumFractionDigits(2);
untuk memaksa dua digitSaya akan menyarankan menggunakan String.format () jika Anda memerlukan nilai sebagai
String
dalam kode Anda.Misalnya, Anda dapat menggunakan
String.format()
cara berikut:sumber
sumber
DecimalFormat df = new DecimalFormat("0.00");
sumber
Output adalah 22,35. Jika Anda membutuhkan 3 angka desimal, ubah menjadi "% .3f".
sumber
Banyak orang telah menyebutkannya
DecimalFormat
. Tetapi Anda juga dapat menggunakanprintf
jika Anda memiliki versi terbaru Java:Lihat dokumen pada Formatter untuk informasi lebih lanjut tentang string format printf .
sumber
Trik sederhana adalah membuat versi variabel Anda yang lebih pendek dengan mengalikannya dengan mis
100
, membulatkannya dan membaginya100.0
lagi. Dengan cara ini Anda menghasilkan variabel, dengan 2 tempat desimal :"Trik murah" ini selalu cukup baik untuk saya, dan berfungsi dalam bahasa apa pun (saya bukan orang Jawa, baru mempelajarinya).
sumber
Anda dapat menggunakan kode cepat ini di bawah ini yang mengubah sendiri di akhir. Tambahkan berapa nol yang merujuk setelah titik
sumber
Lihatlah DecimalFormat
Berikut ini adalah contoh dari tutorial:
Jika Anda memilih pola seperti "###. ##", Anda akan mendapatkan dua tempat desimal, dan saya pikir nilainya akan dibulatkan. Anda akan ingin melihat tautan untuk mendapatkan format persis yang Anda inginkan (mis. Apakah Anda ingin mengekor nol)
sumber
Di bawah ini adalah kode bagaimana Anda dapat menampilkan output data float dengan 2 tempat desimal di Jawa:
sumber
OK - str untuk mengapung.
Keluaran:
sumber
program kecil sederhana untuk demonstrasi:
sumber
Lakukan saja
String str = System.out.printf("%.2f", val).replace(",", ".");
jika Anda ingin memastikan bahwa terlepas dari Lokal pengguna, Anda akan selalu mendapatkan / menampilkan "." sebagai pemisah desimal. Ini adalah suatu keharusan jika Anda tidak ingin membuat program Anda macet jika nanti Anda melakukan semacam konversifloat f = Float.parseFloat(str);
sumber
Satu masalah yang membuat saya selama satu jam atau lebih, pada
DecimalFormat
- Ini menangani input ganda dan mengapung berbeda. Bahkan perubahan RoundingMode tidak membantu. Saya bukan ahli tetapi berpikir itu mungkin membantu orang seperti saya. AkhirnyaMath.round
malah menggunakan . Lihat di bawah:Keluaran:
sumber
Coba ini:-
sumber