2010-10-30 20 views

cevap

81

bir çift C türü değil, bir amaç-Cı amacıdır. Dolayısıyla C atmalarını kullanın:

double myDouble = 3.2; 
int myInt = (int)myDouble; 
+0

Ben NSDouble nesnel C muadili olduğuna inanıyoruz, düzelt lütfen m yanlış. –

+3

@Joe D: Sadece NSInteger var (int * veya * 32/64bit'e bağlı olarak uzun bir yazım hatası), ancak C veri türlerini bir nesneye saran NSNumber var. –

4

Sadece yukarıda belirtilen Ondan önce) işlevlerini kat() veya hücrelerinin, (kullanmak isteyebilirsiniz olsa yeterince iyi dönüştürme.

+1

Özellikle ödemeler için doğruluk gerektiren soru bağlamında bunun önemli olduğunu buldum. Tamsayı dönüşümden sonra 229'a dönüşen 230 gibi basit sayıları buldum. –

+3

Fiyatlar temsili için kayan nokta kullanmak kötü bir uygulama olduğuna inanıyorum. Doğru yol tamsayılar kullanmaktır (sent cinsinden, 2 dolar 200 dolar) ve bunları sadece çıkışta "2.00" e çevirir. Ayrıca Cocoa, iOS tarafından fiyat gösterimi için kullanılan NSDecimalNumber sınıfını sağlar. – Vladimir

1

intValue bir NSNumber örneği için bir yöntemdir. Ölçek türü int, double ve float için sınıf türü değillerdir. Yani, yöntemleri yok. C# gibi bazı diller int ya da bir nesne olarak ikiye katlanabilir ve bir alt-yordam tarafından birbirlerine aktarılabilirler. kod

-6
double myDouble = 3.2; 

int myInt = @(myDouble).intValue; 

Numune aslında kullanın:

NSNumber * percentLike1 = @(@(self.percentLike.doubleValue*100).integerValue); 
+3

-1: Bu çok dönel ve verimsiz bir dönüştürme yöntemidir. Esasen bir ilkel değerden başka bir ilkel değeri almak için bir nesne yaratıyorsunuz. Bunu bir döngüde yapmış olsaydınız, bunun büyük olasılıkla dikkate değer bir etkisi olur. – FreeAsInBeer

+0

karmaşıklık sabittir. Tek düşündüğüm bu. Hayır, farkedilemez. –

+2

Kodunuz, (int) myDouble'dan daha mı karmaşık veya daha okunabilir oluyor? – FreeAsInBeer

İlgili konular