所以,我正在制作一个解决二次方程的应用程序。主界面只是要求用户输入A,B和C的值。问题是,我没有得到正确的答案。这是代码:
NSString *intStringa = [NSString stringWithFormat:@"%@", a.text];
int aa = [intStringa intValue];
NSString *intStringb = [NSString stringWithFormat:@"%@", b.text];
int bb = [intStringb intValue];
NSString *intStringc = [NSString stringWithFormat:@"%@", c.text];
int cc = [intStringc intValue];
double d = ( -(bb) + ( (bb)^2 - (4*aa*cc) ) ^0,5 ) / (2*aa);
double e = ( -(bb) - ( (bb)^2 - (4*aa*cc) ) ^0.5 ) / (2*aa);
label1.text = [NSString stringWithFormat:@"%lf", d];
label2.text = [NSString stringWithFormat:@"%lf", e];
有什么想法吗? 感谢!!!
答案 0 :(得分:1)
您无法在C及相关语言(C ++,Objective-C等)中使用^
进行求幂 - 它是一个按位XOR运算符。
变化:
double d = ( -(bb) + ( (bb)^2 - (4*aa*cc) ) ^0,5 ) / (2*aa);
double e = ( -(bb) - ( (bb)^2 - (4*aa*cc) ) ^0.5 ) / (2*aa);
为:
#include <math.h>
...
double d = - (bb + sqrt(bb * bb - 4 * aa * cc)) / (2 * aa);
double e = - (bb - sqrt(bb * bb - 4 * aa * cc)) / (2 * aa);
答案 1 :(得分:1)
使用:
root用户没有^
运算符。使用sqrt
或pow(base,exp)
。
double d = ( -bb + sqrt( bb*bb - 4*aa*cc ) ) / (2*aa);
double e = ( -bb - sqrt( bb*bb - 4*aa*cc ) ) / (2*aa);
,或者
double d = ( -bb + pow(( bb*bb - 4*aa*cc ), 0.5) ) / (2*aa);
double e = ( -bb - pow(( bb*bb - 4*aa*cc ), 0.5) ) / (2*aa);
答案 2 :(得分:0)
C中没有强大的^
运算符。您必须使用pow(b,2)
或b*b
。
你为什么要使用stringWithFormat
?只需使用[a.text intValue]
。
int aa = [a.text intValue];
int bb = [b.text intValue];
int cc = [c.text intValue];
double d = (-bb + sqrt(bb*bb - 4*aa*cc)) / (2.0*aa);
double e = (-bb - sqrt(bb*bb - 4*aa*cc)) / (2.0*aa);
label1.text = [NSString stringWithFormat:@"%lf", d];
label2.text = [NSString stringWithFormat:@"%lf", e];
答案 3 :(得分:0)
您遇到了一些问题:您使用^
作为取幂运算符;它不是。你也有一个“指数”中的拼写错误:0,5
而不是0.5
。我会把你的等式写成:
double d = ( -bb + sqrt( bb*bb - 4*aa*cc ) ) / (2*aa);
double e = ( -bb - sqrt( bb*bb - 4*aa*cc ) ) / (2*aa);