我是 Objective C 的新手,我开始学习 iOS 开发的基础知识。
如何在 Objective C 中轻松计算分数?
示例 1: 1/8000 * 60
示例 2: 1/640 / 1/400
我也需要将结果(如果它 < 1)作为分数。
我是 Objective C 的新手,我开始学习 iOS 开发的基础知识。
如何在 Objective C 中轻松计算分数?
示例 1: 1/8000 * 60
示例 2: 1/640 / 1/400
我也需要将结果(如果它 < 1)作为分数。
我想我会实现一个新类,说它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];
}
或者,您可以添加一个reduce
orsimplify
方法,也可能添加一个allowReducible
属性和一个isIrreducible
方法。您还可以实现isEqual
和compareTo
方法。Adescription
应该只将“a/b”打印为NSString
.
您可以使用类型转换。
int x = 1;
int y = 8000;
int z = 60;
float result = ((float)x) / y * z;
您可以使用float
变量来计算十进制数。但是,没有直接的方法可以得到分数的计算结果,你总是会得到另一个float
,即十进制数。有一些算法可以将十进制数转换为分数,但这不是 Objective-C 的语言特性。