Saya memiliki nilai 25.00
dalam a float
, tetapi ketika saya mencetaknya di layar itu 25.0000000
.
Bagaimana saya bisa menampilkan nilai hanya dengan dua tempat desimal?
objective-c
formatting
floating-point
mskfisher
sumber
sumber
Jawaban:
Ini bukan masalah bagaimana nomor itu disimpan, itu adalah masalah bagaimana Anda menampilkannya. Saat mengubahnya menjadi string, Anda harus membulatkan ke presisi yang diinginkan, yang dalam kasus Anda adalah dua tempat desimal.
Misalnya:
%.02f
memberitahu formatter bahwa Anda akan memformat float (%f
) dan, yang harus dibulatkan ke dua tempat, dan harus diisi dengan0
s.Misalnya:
sumber
25
..@"%.f"
melakukan trik. Apa yang tertulis di atas, tidak .@"%.*f", decimalPlaces, number
%03.f = 025
Berikut adalah beberapa koreksi-
Cepat 3
Obj-C
dan seterusnya...
sumber
Anda juga dapat mencoba menggunakan NSNumberFormatter:
Anda mungkin perlu juga mengatur format negatif, tapi saya pikir itu cukup pintar untuk mengetahuinya.
sumber
Saya membuat ekstensi cepat berdasarkan jawaban di atas
pemakaian:
sumber
Dalam Bahasa Swift, jika Anda ingin menunjukkan, Anda perlu menggunakannya dengan cara ini. Untuk menetapkan nilai ganda di UITextView, misalnya:
Jika Anda ingin tampil dalam LOG seperti objektif-c menggunakan NSLog (), maka dalam Bahasa Swift Anda dapat melakukannya dengan cara ini:
sumber
DI objektif-c, jika Anda berurusan dengan array char biasa (bukan pointer ke NSString) Anda juga bisa menggunakan:
OTOH, jika yang Anda inginkan adalah menyimpan nilai itu pada array char yang bisa Anda gunakan:
sumber
Masalah dengan semua jawaban adalah mengalikan dan kemudian membagi hasil dalam masalah presisi karena Anda menggunakan pembagian. Saya belajar ini sejak lama dari pemrograman pada PDP8. Cara mengatasinya adalah:
Jadi 15.6578 mengembalikan hanya 15.66 dan bukan 15.6578999 atau sesuatu yang tidak diinginkan seperti itu.
Tingkat presisi yang Anda inginkan terserah Anda. Hanya saja, jangan membagi produk, kalikan dengan desimal yang setara. Tidak diperlukan konversi String lucu.
sumber
dalam obyektif -c adalah Anda ingin menampilkan nilai float dalam 2 angka desimal kemudian memberikan argumen yang menunjukkan berapa banyak angka desimal yang ingin Anda tampilkan misalnya 0,02f akan mencetak 25,00 0,002f akan mencetak 25.000
sumber
Berikut beberapa metode untuk memformat secara dinamis sesuai dengan presisi:
misalnya
=> 2.3453
=> 2
=> 2.35 (pembulatan ke atas)
sumber
Metode lain untuk Swift (tanpa menggunakan NSString):
PS solusi ini tidak bekerja dengan tipe CGFloat yang hanya diuji dengan
Float
&Double
sumber
Gunakan
NSNumberFormatter
denganmaximumFractionDigits
seperti di bawah ini:Dan Anda akan mendapatkannya
12.35
sumber
Jika Anda perlu mengapung nilai juga:
sumber
sumber