Yeni kullanıcı sorusu ama bu beni çıldırtıyor!Bir Float'ı Objective C'deki int'ye nasıl dönüştürebilirim?
myInt = [myFloat integerValue];
ama TamsayıDeğer yüzen çalışmaz esasen söyleyerek bir hata alıyorum: Bunu çalışıyorum.
Nasıl yaparım?
Yeni kullanıcı sorusu ama bu beni çıldırtıyor!Bir Float'ı Objective C'deki int'ye nasıl dönüştürebilirim?
myInt = [myFloat integerValue];
ama TamsayıDeğer yüzen çalışmaz esasen söyleyerek bir hata alıyorum: Bunu çalışıyorum.
Nasıl yaparım?
C eminim tarzı döküm sözdizimi Objective C çalışır, bu yüzden de bunu deneyin:
int myInt = (int) myFloat;
en azından, bir derleyici uyarı susturmaya olabilir.
döndürür Bu ondalık değerleri atmak, bu gibi yapmak istiyorum: myFloat = 0.999 = myInt = 1 ama kodunuzu kullanarak myInt 0 alır, nasıl yapabilirim? –
@GabrielMolter 'roundf''e bir göz atın - en yakın tam sayıya yuvarlanacak :) –
Tamam! Teşekkür ederim! Tam olarak ihtiyacım olan şey! –
nesi: akılda
int myInt = myFloat;
ayı bu sıfıra doğru varsayılan yuvarlama kuralı kullanacağız (yani -3.9f olur -3)
Gevşemeyi desteklemek için, Objective-C'nin tamamen yeni bir dil yerine C'nin bir üst kümesi olduğunu unutmayın.
Normal eski ANSI C'de yapabileceğiniz her şey Objective-C'de yapılabilir.
int myInt = (int) myFloat;
Benim için iyi çalıştı.
int myInt = [[NSNumber numberWithFloat:myFloat] intValue];
Eh, bu bir seçenektir. Yolculuğu sevdiyseniz, NSString kullanarak bazılarını düşünebilirim. Karmaşık bir alternatif olduğunda, neden kolay?
Eğer bir NSNumber'e çevirecekseniz, neden '@ (myFloat) .intValue' kullanılmıyor? –
@ BenC.R.Leggiero, çünkü cevap Ağustos 2010'da verildi ve optimize olmasına rağmen hala geçerli. NSNumber literalleri, 2012 yılında piyasaya sürülmeyecek kadar fazla yanılmadığı takdirde LLVM/CLang 3.1 ile tanıştılar. Fakat o zaman bile, kendim hakkında bilgi edinmek için biraz zamana ihtiyacım vardı. Bu günlere tarihlenen kendi cevabınızı eklemekten çekinmeyin, bültenleri kullanın ve hatta benden daha fazla kazanabilirsiniz. –
Ayrıca C'nin lroundf(myFloat)
'u da kullanabilirsiniz.
olağanüstü kullanışlı ipucu: o zaman/kontrol tanımı-roundf
ve Git sağ tıklayıp
myInt = roundf(someFloat);
dedikleri gibi Xcode en düzenleyicisinde, kodunuzu girin (veya basitçe komuta-tıklama). işlevlerinin çok uzun bir listesini size açıkça göreceksiniz. (Hepsini hatırlamak imkansız, bu yüzden sadece bu numarayı kullanın.)
Örneğin, eldeki örnekte, büyük olasılıkla lrintf
istediğin şeydir.
Diğer bir ipucu: bu birçok işlev hakkında bilgi almak için. Terminal.app (veya herhangi bir kabuk - Xcode, sadece normal Terminal.app ile ilgisi yoktur) sadece man lrintf
yazın ve size tam bilgi verecektir. Umarım birisine yardım eder.
İşte 2012 yılında başlanan bir daha kısa ve öz bir yaklaşım:
myInt = @(myFloat).intValue;
yüzer temellerdir, dolayısıyla bunun üzerine [myFloat TamsayıDeğer] kullanamazsınız değil objektif-c nesnelerdir. NSObject öğesini uzatmazsa, iletilere iletemezsiniz. – seanalltogether
Overkill yöntemi şöyledir: [[NSNumber numberWithFloat: myFloat] integerValue] (ama gerçekten kullanmalısınız, gerçekten) – Kornel
@porneL 2013'te oldukça emin olabilirsiniz [[@ (myFloat) integerValue] ' –