2013-05-06 11 views
9

Tôi đang cố gắng tạo một bộ chuyển đổi chiều cao mục tiêu-C đơn giản. Đầu vào là một (float) biến của bàn chân, và tôi muốn chuyển đổi (int) feet và (float) inches:iOS mục tiêu-C: sử dụng modulo trên phao để lấy "inch" từ Feet

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

Tuy nhiên, tôi tiếp tục nhận được một lỗi từ xcode, và tôi nhận ra rằng modulo toán tử chỉ hoạt động với (int) và (long). Ai đó có thể đề nghị một phương pháp thay thế? Cảm ơn!

+0

Có, modulo chỉ làm việc với số nguyên (không phải số thập phân). Cũng giống như những gì bạn đã làm, bỏ nó vào số nguyên, sau đó modulo. – Raptor

Trả lời

22

công trình Thậm chí modulo cho phao, sử dụng:

fmod()

Bạn có thể sử dụng cách này quá ...

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

Điều này là hoàn hảo, cảm ơn. – jake9115

+0

'float myInches = fmodf (totalHeight, myFeet);' Bạn phải nhân nó với 12. – shim

+0

@shim: OP không muốn Tất cả bàn chân được chuyển đổi thành inch ... Anh ta chỉ muốn chia đôi feet theo inch, và Feet trong toàn bộ số. –

1

Tại sao bạn không sử dụng

CGFloat myInches = totalHeight - myFeet; 
+0

Vâng, điều đó thật hiển nhiên! Tôi nên sử dụng ngăn xếp tràn qua 3 giờ sáng. Cảm ơn rất nhiều. – jake9115

+0

bạn không nên yêu cầu chấp nhận câu trả lời ... nếu OP thích khác như bạn sẽ nhận được + phiếu bầu .. :) –

+0

@AnoopVaidya Yep, tôi biết bạn đang đề cập đến điều gì, nhưng bạn biết một số người mới luôn quên chấp nhận câu trả lời . Tôi không chắc chắn về điều này và tôi thấy nhận xét của OP rằng có vẻ như câu trả lời của tôi đã trả lời câu hỏi của OP. Vì vậy, tôi chỉ cần thêm lời nhắc. Điều này có rõ ràng không? – sunkehappy

0

Như đã trả lời trước đó, trừ đi là con đường để đi. Chỉ cần nhớ chuyển đổi một phần mười feet sang inch bằng cách nhân với 12:

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