2015-10-17 89 views
-1

我试过基于C一些计算,我的代码如下math.h方法工作不同?

#include <stdio.h> 
#include <math.h> 

int main(void) 
{ 
    float a = 1.8; 
    float b = 3.3; 
    float c = 1.5; 
    float d = 5.9; 
    float e = 2.6; 

    float result = a/(a + (abs(a - b)/(b + (pow(c, 5)/(e + (pow(d, 2)/(b + (pow(c, 3)/4)))))))); 
    float result2 = a/(a + ((-1) * (a-b))/(b + ((c * c * c * c * c)/(e + ((d * d)/(b + ((c * c * c)/4))))))); 
    printf("Result = %.4f\n", result); 
    printf("Result2 = %.4f\n", result2); 
    system("pause"); 
    return(0); 
} 

结果2是正确的结果。那么为什么结果和结果2是不同的?我在这里做错了什么?

+1

可以共享成果 – Haris

+4

'ABS(AB)'是!='(-1)*(AB)' – wrangler

+0

@wrangler A和B的当前设置,是的,它等于 –

回答

7

absint

int abs(int j); 

fabsfabsf是你应该使用什么:

double fabs(double x); 
float fabsf(float x); 

编辑:

改变absfabs,本地测试后给出:

[[email protected] tmp]$ gcc a.c -lm -Wall -pedantic 
[[email protected] tmp]$ ./a.out 
Result = 0.8272 
Result2 = 0.8272 
+0

这似乎是正确的解决方案,谢谢 –