Saya harus menambahkan import java.text.NumberFormat;.
Mike S
6
Ini memaksa pengelompokan gaya AS yang selalu digunakan ,, namun ada juga wilayah yang menggunakan .pengelompokan. Singkatnya, pengodean lokal dianggap sebagai praktik yang buruk.
Hai Zhang
4
@DreaminginCode Untuk melakukannya dengan baik Locale.getCurrent()adalah solusinya
Roger RV
@RogerRV Tidak ada Lokal.getCurrent () (setidaknya di android)
E.Akio
Yeh ini bukan jawaban terbaik untuk 96% orang yang tidak tinggal di AS
fig
152
Anda meminta yang tercepat, tetapi mungkin maksud Anda "terbaik" atau "benar" atau "khas"?
Anda juga meminta tanda koma untuk menunjukkan ribuan, tetapi mungkin maksud Anda "dalam bentuk yang dapat dibaca manusia normal sesuai dengan kebiasaan lokal pengguna Anda"?
Anda melakukannya seperti itu:
int i =35634646;String s =NumberFormat.getIntegerInstance().format(i);
Pola Anda tidak lebih dari #,###, jika Anda ingin memformat gaya Eropa maka Anda dapat menggunakannya #,##,###.
Ali
7
@ Ali: Format yang Anda gambarkan hanya digunakan di India, dan saya setidaknya 90% yakin India tidak ada di Eropa.
Cairnarvon
Saya mengerti ... baiklah, jika Anda membutuhkan format India maka itulah cara Anda melakukannya.
Ali
1
Ini bergantung pada lokal dan tidak akan menghasilkan output yang benar (sesuai pertanyaan) jika dijalankan di mana lokal default tidak memisahkan ribuan dengan a ,.
antak
17
Jawaban lainnya benar, namun periksa kembali lokal Anda sebelum menggunakan "%,d":
inilah solusi bagi Anda yang tidak dapat mengakses "numberformat" atau "String.format" (menggunakan versi terbatas java di dalam suatu kerangka kerja). Semoga bermanfaat.
Pertimbangkan untuk mengedit jawaban Anda menambahkan beberapa komentar ke kode Anda (dan mungkin membungkusnya dalam suatu metode, sehingga bisa lebih berguna)
noiaverbale
0
gunakan ekstensi
import java.text.NumberFormat
val Int.commaString:String
get()=NumberFormat.getInstance().format(this)
val String.commaString:String
get()=NumberFormat.getNumberInstance().format(this.toDouble())
val Long.commaString:String
get()=NumberFormat.getInstance().format(this)
val Double.commaString:String
get()=NumberFormat.getInstance().format(this)
import java.text.NumberFormat;
.,
, namun ada juga wilayah yang menggunakan.
pengelompokan. Singkatnya, pengodean lokal dianggap sebagai praktik yang buruk.Locale.getCurrent()
adalah solusinyaAnda meminta yang tercepat, tetapi mungkin maksud Anda "terbaik" atau "benar" atau "khas"?
Anda juga meminta tanda koma untuk menunjukkan ribuan, tetapi mungkin maksud Anda "dalam bentuk yang dapat dibaca manusia normal sesuai dengan kebiasaan lokal pengguna Anda"?
Anda melakukannya seperti itu:
Orang Amerika akan mendapatkan "35.634.646"
Jerman akan mendapatkan "35.634.646"
Jerman Swiss akan mendapatkan "35'634'646"
sumber
sumber
Integer:
Ganda:
String.format cukup kuat.
- Diedit per umpan psuzzi .
sumber
String.format
. Ini dimulai denganreturn new Formatter(l) ...
dll. Jadi argumen pengumpul sampah tidak sekuat kelihatannya.Keluaran:
35,634,646
sumber
#,###
, jika Anda ingin memformat gaya Eropa maka Anda dapat menggunakannya#,##,###
.,
.Jawaban lainnya benar, namun periksa kembali lokal Anda sebelum menggunakan
"%,d"
:Hasil:
sumber
Solusi ini bekerja untuk saya:
sumber
Gunakan
%d
specifier format dengan koma:%,d
Sejauh ini cara termudah.
sumber
Jika hal yang sama harus dilakukan di JSP, gunakan:
ofcourse untuk beberapa nilai gunakan:
sumber
inilah solusi bagi Anda yang tidak dapat mengakses "numberformat" atau "String.format" (menggunakan versi terbatas java di dalam suatu kerangka kerja). Semoga bermanfaat.
sumber
gunakan ekstensi
hasil
sumber
tidak bisakah kamu menggunakan a
Koma di
printf
harus menambahkan koma ke dalam%d
antar.Bukan positif tentang itu, tetapi bekerja untuk saya.
sumber
Pertama, Anda perlu memasukkan tag JSTL: -
di awal halaman
sumber