1

出力に「nan」と「nani」が表示されます。これが「数ではない」を表していることを発見しましたが、どこが間違っているのか、問題がObjective-Cの理解不足にあるのか、虚数なのか、それとも何か他のものなのかがわかりません。

どんな助けや指針も大歓迎です!

ありがとう。

#import <Foundation/Foundation.h>
@interface Complex: NSNumber

-(void) setReal: (double) a;
-(void) setImaginary: (double) b;
-(void) print; // display as a + bi
-(double) real;
-(double) imaginary;

@end

@implementation Complex
{
    double real;
    double imaginary;
}
-(void) setReal: (double) a
{
    real = a;
}
-(void) setImaginary: (double) b
{
    imaginary = b;
}
-(void) print
{
    NSLog (@"%f x %fi = %f", real, imaginary, real * imaginary);
}
-(double) real
{
    return real;
}
-(double) imaginary
{
    return imaginary;
}
@end

int main (int argc, const char * argv[])
{
    @autoreleasepool {

        Complex *complex1 = [[Complex alloc] init];

        // Set real and imaginary values for first complex sum:
        [complex1 setReal: 2];
        [complex1 setImaginary: 3 * (sqrt(-1))];

        // Display first complex number sum with print method:
        NSLog (@"When a = 2 and b = 3, the following equation a x bi =");
        [complex1 print];

        //Display first complex number sum with getter method:
        NSLog (@"When a = 2 and b = 3, the following equation 
        a x bi = %f x %fi = %fi", [complex1 real], [complex1 imaginary], 
        [complex1 real] * [complex1 imaginary]);

    }
    return 0;
}
4

2 に答える 2

1

あなたの NaN は から来ますsqrt(-1)

独自の複合型を実装しますか? C99 はそれらを追加するため、古い Objective-C コンパイラを使用していない限り、次のようなことができます。

#include <complex.h>

double complex c = 3 * 2 I;
double r = creal(c);
double i = cimag(c);

GNU libc マニュアルには、便利なドキュメントと例がいくつかあります: Complex Numbers

于 2013-07-04T06:51:05.450 に答える