2013-05-06 19 views
9

Basit bir objektif-C yükseklik dönüştürücü yapmaya çalışıyorum. giriş feet (şamandıra) değişkendir ve ben (int) ayak ve (şamandıra) inçe dönüştürmek istiyorum:iOS hedefi-C: Feet'den "inç" almak için bir kayanda modulo kullanarak

float totalHeight = 5.122222; 
float myFeet = (int) totalHeight; //returns 5 feet 
float myInches = (totalHeight % 12)*12; //should return 0.1222ft, which becomes 1.46in 

Ancak, ben xcode bir hatayı almaya devam ve ben modulo fark Operatör sadece (int) ve (uzun) ile çalışır. Birisi alternatif bir yöntem önerebilir mi? Teşekkürler!

+0

Evet, modülo sadece tamsayılar (non-ondalık) için çalışır. Yaptığın gibi, onu tamsayıya, sonra da modüle et. – Raptor

cevap

22

bile modülo eserlerini kullanmayın:

fmod()

Sen de bu şekilde kullanabiliriz ...

float totalHeight = 5.122222; 
float myFeet = (int) totalHeight; //returns 5 feet 
float myInches = fmodf(totalHeight, myFeet); 
NSLog(@"%f",myInches); 
+0

Bu mükemmel, teşekkürler. – jake9115

+0

'float myInches = fmodf (totalHeight, myFeet); 12 ile çarpmanız gerekiyor. – shim

+0

@shim: OP istemiyor Tüm ayaklar inç olarak dönüştürülüyor ... Tam sayı ve Ayaklar. –

1

Neden şamandıra, kullanım için

CGFloat myInches = totalHeight - myFeet; 
+0

Evet, bu çok açık! 3am geçtikten sonra taşması kullanmalıyım. Çok teşekkürler. – jake9115

+0

cevabını kabul etmemelisiniz ... Eğer OP, + oy alacağınız gibi diğerlerini beğenirse .. :) –

+0

@AnoopVaidya Evet, ne kastettiğinizi biliyorum ama bazı yeni gelenler her zaman cevap kabul etmeyi unutuyorlar . Bunun hakkında emin değilim ve OP'in yorumunun cevabın OP'nin sorularına cevap verdiğini gördüğünü gördüm. Bu yüzden sadece bir hatırlatıcı ekliyorum. Bu açık mı? – sunkehappy

0

Daha önce cevaplandığı gibi, çıkarılması gereken yoldur. Sadece 12 ile çarpılarak inç ayak onda birine dönüştürmek unutmayın:

float totalHeight = 5.122222; 
int myFeet = (int) totalHeight; 
float myInches = (totalHeight - myFeet) * 12; 
İlgili konular