1

私は Objective C を初めて使用し、iOS 開発の基礎を学び始めました。

Objective Cで分数を簡単に計算するにはどうすればよいですか?

例 1: 1/8000 * 60

例 2: 1/640 / 1/400

結果 (< 1 の場合) も分数として持つ必要があります。

4

3 に答える 3

3

Fraction分子と分母の 2 つのプロパティを持つ新しいクラスを実装すると思います。次に、次の関数のうち 4 つ (必要に応じてそれ以上) を実装します。

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

Optionally you could add a reduce or simplify method and possibly an allowReducible property and an isIrreducible method. You could also implement isEqual and compareTo methods. A description should just print "a/b" as an NSString.

于 2012-05-30T10:35:19.090 に答える
1

型キャストを使用できます。

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

 float result  =  ((float)x) / y * z;
于 2012-05-30T10:19:48.517 に答える
1

float変数を使用して小数で計算できます。ただし、計算結果を分数として直接取得する方法はありません。常に別のfloat、つまり 10 進数を取得します。10 進数を分数に変換するアルゴリズムはありますが、Objective-C の言語機能ではありません。

于 2012-05-30T10:36:29.540 に答える