Objective c 如何使用目标C中的分数进行计算

Objective c 如何使用目标C中的分数进行计算,objective-c,ios,Objective C,Ios,我不熟悉objective C,我开始学习iOS开发的基础知识 如何使用目标C中的分数轻松计算 示例1:1/8000*60 示例2:1/640/1/400 如果它的分数也小于1,我需要得到结果。您可以使用类型转换 int x = 1; int y = 8000; int z = 60; float result = ((float)x) / y * z; 您可以使用类型转换 int x = 1; int y = 8000; int z = 60; float resul

我不熟悉objective C,我开始学习iOS开发的基础知识

如何使用目标C中的分数轻松计算

示例1:1/8000*60

示例2:1/640/1/400

如果它的分数也小于1,我需要得到结果。

您可以使用类型转换

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

 float result  =  ((float)x) / y * z;
您可以使用类型转换

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

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

我想我会实现一个新类,比如分数,它有两个属性,分子和分母。如果有必要,我将执行以下四项或更多功能:

- (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];
}
用这些方法,做你在学校学过的常用算术。如果分子和分母都有公约数,记住要简化

编辑:以下函数之一的示例实现:

- (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];
}

您可以选择添加reduce或simplify方法,也可以添加allowReducible属性和isIrreducible方法。您还可以实现isEqual和compareTo方法。描述应该只是将A/b打印为NSString。

我想我应该实现一个新类,比如分数,它有两个属性,分子和分母。如果有必要,我将执行以下四项或更多功能:

- (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];
}
用这些方法,做你在学校学过的常用算术。如果分子和分母都有公约数,记住要简化

编辑:以下函数之一的示例实现:

- (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];
}

您可以选择添加reduce或simplify方法,也可以添加allowReducible属性和isIrreducible方法。您还可以实现isEqual和compareTo方法。描述应仅将A/b打印为NSString。

您可以使用浮点变量使用十进制数字进行计算。但是,没有直接的方法可以将计算结果作为一个分数,您总是会得到另一个浮点,即。E十进制数。有一些算法可以将十进制数转换成分数,但这不是Objective-C的语言功能。

您可以使用浮点变量使用十进制数进行计算。但是,没有直接的方法可以将计算结果作为一个分数,您总是会得到另一个浮点,即。E十进制数。有一些算法可以将十进制数转换成分数,但这不是Objective-C的语言功能。

您可以实现一个分数类。无论是这本书还是我的旧版本,都有很好的教程——这也是一本很棒的书。您可以实现一个分数类。无论是这本书还是我的旧版本,都有很好的教程——这也是一本很棒的书。OP要求的不是小数,而是分数。看看我下面的答案。是的,我读过。但是,如果不为一个分数类编写几十行代码,分数是不可能的,因此我要告诉OP他们可以做什么:用十进制数来描述相同的数字,并使用合适的算法将结果转换为分数。OP要求的不是十进制数,而是分数。看看我下面的答案。是的,我读过。但是,由于分数不可能不为一个分数类编写几十行代码,我告诉OP他们可以做什么:用十进制数来描述相同的数字,并使用合适的算法将结果转换为分数。输入很棒!非常感谢你,斯文。isEqual和compareTo方法是必要的,因为我想将其中一些对象存储在可排序的数组中。输入很棒!非常感谢你,斯文。isEqual和compareTo方法是必要的,因为我想将其中一些对象存储在可排序的数组中。