如何用Objective C中的分数计算

时间:2012-05-30 10:06:15

标签: objective-c ios

我是目标C的新手,我开始学习iOS开发的基础知识。

如何使用Objective C中的分数轻松计算?

  

示例1: 1/8000 * 60

     

示例2: 1/640 / 1/400

我需要将结果(如果它的< 1)作为分数。

3 个答案:

答案 0 :(得分:3)

我想我会实现一个新类,比如Fraction,它有两个属性,分子和分母。然后,我将实现以下函数中的四个(或更多,如果需要):

- (Fraction*) add:(Fraction*)operand;
- (Fraction*) subtract:(Fraction*)operand;
- (Fraction*) multiply:(Fraction*)operand;
- (Fraction*) divide:(Fraction*)operand;
- (Fraction*) invert;
+ (Fraction*) fractionByAdding:(Fraction*)op1 to:(Fraction*)op2;
+ (Fraction*) fractionBySubtracting:(Fraction*)op1 from:(Fraction*)op2;
+ (Fraction*) fractionByMultiplying:(Fraction*)op1 with:(Fraction*)op2;
+ (Fraction*) fractionByDuviding:(Fraction*)op1 by:(Fraction*)op2;
+ (Fraction*) fractionByInverting:(Fraction*)operand;

在这些方法中,做你在学校学到的常用算法。如果分子和分母都有公约数,请记住要简化。

编辑:其中一个功能的示例实现:

- (Fraction*) add:(Fraction*)operand {
    return [Fraction fractionByAdding:self to:operand];
}

+ (Fraction*) fractionByAdding:(Fraction*)op1 to:(Fraction*)op2 {
    int num = (op1.numerator * op2.denominator) + (op2.numerator * op1.denominator);
    int denom = op1.denominator * op2.denominator;
    return [[Fraction alloc] initWithNumerator:num andDenominator:denom];
}

您可以选择添加reducesimplify方法,可能还有allowReducible属性和isIrreducible方法。您还可以实施isEqualcompareTo方法。 description只需将“a / b”打印为NSString

答案 1 :(得分:1)

您可以使用类型转换。

 int x = 1;
 int y = 8000;
 int z = 60;

 float result  =  ((float)x) / y * z;

答案 2 :(得分:1)

您可以使用float变量计算十进制数。但是,没有直接的方法可以将计算结果作为一个分数,你将总是得到另一个float,i。即十进制数。有些算法可以将十进制数转换为分数,但它不是Objective-C的语言特性。