Saya ingin mengubah string menjadi dobel dan setelah melakukan beberapa matematika di atasnya, mengubahnya kembali menjadi string.
Bagaimana saya melakukan ini di Objective-C?
Apakah ada cara untuk membulatkan dobel ke bilangan bulat terdekat juga?
objective-c
cocoa
cocoa-touch
rksprst
sumber
sumber
Jawaban:
Anda dapat mengubah NSString menjadi ganda dengan
Pembulatan ke int terdekat kemudian dapat dilakukan sebagai
Jujur saya tidak yakin apakah ada cara yang lebih efisien untuk mengkonversi kembali menjadi string daripada
sumber
[[NSNumber numberWithInt:myInt] stringValue]
Untuk benar-benar mengonversi dari string ke angka dengan benar, Anda perlu menggunakan instance yang
NSNumberFormatter
dikonfigurasikan untuk lokal tempat Anda membaca string.Lokal yang berbeda akan memformat angka secara berbeda. Sebagai contoh, di beberapa bagian dunia,
COMMA
digunakan sebagai pemisah desimal sedangkan yang lain adalahPERIOD
- dan ribuan pemisah (saat digunakan) dibalik. Kecuali kalau itu ruang. Atau tidak hadir sama sekali.Itu benar-benar tergantung pada sumber input. Hal paling aman untuk dilakukan adalah mengonfigurasikan
NSNumberFormatter
cara input Anda diformat dan digunakan-[NSFormatter numberFromString:]
untuk mendapatkannyaNSNumber
. Jika Anda ingin menangani kesalahan konversi, Anda dapat menggunakannya-[NSFormatter getObjectValue:forString:range:error:]
.sumber
Menambah jawaban olliej, Anda dapat mengkonversi dari int kembali ke string dengan
NSNumber
'sstringValue
:stringValue
padaNSNumber
invokedescriptionWithLocale:nil
, memberikan Anda representasi string nilai yang terlokalisasi. Saya tidak yakin apakah[NSString stringWithFormat:@"%d",myInt]
akan memberi Anda reprsentasi yang dilokalkan dengan benarmyInt
.sumber
Metode pembulatan olliej salah untuk angka negatif
Inilah alternatifnya
Anda tentu saja dapat menggunakan fungsi pembulatan dari math.h
sumber
Berikut ini adalah contoh kerja NSNumberFormatter membaca String nomor lokal (xCode 3.2.4, osX 10.6), untuk menghemat waktu yang baru saja saya habiskan untuk bermain-main. Hati-hati: walaupun dapat menangani trailing blanks seperti "8,765.4", ini tidak bisa menangani spasi putih dan ini tidak bisa menangani karakter teks yang tersesat. (String input buruk: "8" dan "8q" dan "8 q".)
sumber
nil
nilaiNSNumber*
jika tidak dapat diuraikan. Saya tidak dapat mereproduksi masalah yang Anda miliki dengan memimpin spasi putih dan karakter teks liar, IMO itu berfungsi dengan baik." 28.5 "
mem-parsing sebagai 28,5, dan"gibberish28.5"
,"28.5gibberish"
dan"gibberish28.5gibberish"
semua unparseable;" 2 8 . 5. "
tidak dapat dipilah tetapi itu tidak biasa.sumber
Untuk konversi dari angka ke string, bagaimana dengan menggunakan sintaks literal baru (XCode> = 4.4), ini sedikit lebih kompak.
(Boxes sebagai NSNumber dan dikonversi ke string menggunakan metode deskripsi NSObjects ' )
sumber
Untuk pembulatan, Anda mungkin harus menggunakan fungsi C yang didefinisikan dalam math.h.
Tahan Opsi dan klik dua kali
round
dalam Xcode dan itu akan menampilkan halaman manual dengan berbagai fungsi untuk pembulatan berbagai jenis.sumber
Ini adalah cara termudah yang saya tahu:
sumber
dari contoh ini di sini, Anda dapat melihat konversi dua arah:
sumber
konversi teks yang dimasukkan dalam bidang teks ke integer
pembulatan ke dobel terdekat
pembulatan ke int terdekat (hanya mempertimbangkan nilai positif)
mengkonversi dari dobel ke string
atau
mengkonversi dari int ke string
atau
sumber
Saya akhirnya menggunakan makro praktis ini:
sumber